我有一個使用backbone.marionette和handlebars通過擴展backbone.marionette.handlebars提供的模板的Web應用程序。這工作得很好,但我想現在添加一些templateHelpers幫助格式化,我似乎無法得到它的工作。我已經在我認爲是正確的方式(見下文)中包含了模板助手,但是我從require.js中得到並顯示錯誤:「GET .../templates/helpers/foo.js 404(NotFound)」一旦backbone.marionette應用程序啓動。在backbone.marionette.handlebars中使用Handlerbars幫助程序
我的模板看起來像這樣(更新:感謝陳會毅)
<div>{{{foo myData}}}</div>
而且我已經試過兩件事情。我Marionette.ItemView內首先定義一個簡單的輔助像這樣:
...
return Marionette.ItemView.extend({
template: template,
templateHelpers: {
foo: function (someData) { return 'foo and ' + someData; }
},
...
這沒有工作,即我仍然有在第一段給出的require.js錯誤。 (注意:如果是問題但沒有解決問題,我嘗試了沒有函數參數)。
我做的第二件事是添加一個簡單的文件.../templates/helpers/foo.js,其中require.js定義返回一個帶有函數foo的對象。這給出了與以前相同的錯誤,即缺少文件。這可能是因爲我需要將此文件定義爲依賴項。我更喜歡第一種不需要外部文件的方法,但如果這是正確的方法,則很樂意使用這種方法。
最後,我注意到backbone.marionette.handlebars github上的this issue。這表明templateHelpers可以工作,但可能有問題。任何關於在這個環境中使用助手的建議將非常感激。
UPDATE
我多一點運行實驗表明,如果我有{{FOO}}或{{{FOO}}}然後調用foo的功能Marionette.ItemView.extend但不插入foo的迴歸。但是,如果我有{{foo myData}}或{{{foo myData}}},那麼它會給出上面列出的404 Not found錯誤。奇怪。
只是爲了完整性,我使用
- 骨幹1.0.0
- backbone.marionette 1.0.4
- backbone.marionette.handlebars 0.2.0。