【发布时间】:2013-12-19 17:35:58
【问题描述】:
我有一个使用backbone.marionette 和handlebars 模板的Web 应用程序,模板通过扩展backbone.marionette.handlebars 提供。这运行良好,但我现在想添加一些 templateHelpers 来帮助格式化,但我似乎无法让它工作。
我以我认为正确的方式包含了模板助手(见下文),但我从 require.js 得到错误,说它“GET .../templates/helpers/foo.js 404 (NotFound)”为一旦backbone.marionette 应用程序启动。
我的模板看起来像这样(更新:感谢 Billy Chan)
<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 工作,但可能有问题。任何有关在此环境中使用帮助程序的建议将不胜感激。
更新
我做了更多的实验表明,如果我有 {{foo}} 或 {{{foo}}},那么它会调用 Marionette.ItemView.extend 中的 foo 函数,但不会插入 foo 的返回。但是,如果我有 {{foo myData}} 或 {{{foo myData}}} 那么它会给出上面列出的 404 Not found 错误。奇怪。
为了完整性,我正在使用
- 主干 1.0.0
- backbone.marionette 1.0.4
- backbone.marionette.handlebars 0.2.0.
【问题讨论】:
标签: templates backbone.js marionette handlebars.js