16

是否可以将 Handlebars.js 与Backbone.Marionette扩展一起使用,而无需重新实现 Views 渲染功能?似乎 Marionette 依赖于使用带有下划线模板引擎的 Backbone.js 的约定。但我真的很喜欢车把的方法,所以我问我是否可以使用带车把的 Marionette 的高级工具。

4

4 回答 4

24

将 Handlebars 与 Marionette 一起使用的一种简单方法是template在每个 View 中将其定义为预编译的 Handlebars 模板函数。例如:

var MyView = Backbone.Marionette.ItemView.extend({
    template: Handlebars.compile("Hello, {{name}}"),
    model: new Backbone.Model({name: "Steve"})
});

Marionette 的默认值Renderer会检测到该template属性是一个函数,并相应地调用它。

另请参阅有关此案例的官方文档:https ://github.com/marionettejs/backbone.marionette/wiki/Using-handlebars-templates-with-marionette

和其他 Q/A 与 requirejs + Marionette + Handlebars precompiled:Using precompiled handlebars templates with Marionette

于 2013-04-02T19:13:40.443 回答
6

@brettjonesdev 是正确的,但我发现这里的另一个补充是:

var MyView = Backbone.Marionette.ItemView.extend({
  template: Handlebars.compile($("#assign-products-main-view").html()),
  model: new Backbone.Model({name: "Steve"})
});

这在搜索 DOM 时很有帮助。

于 2013-07-10T06:28:18.667 回答
3

我们也可以在这里使用预编译的模板。

var MyView = Backbone.Marionette.ItemView.extend({
template: Handlebars.templates['filename'],
model: new Backbone.Model({name: "Steve"})
});

这样我们就可以从 Marionette 中删除编译角色。

于 2015-04-16T23:39:14.467 回答
2

当前的两个答案不利用缓存。请改用此要点

于 2014-06-12T04:29:07.810 回答