是否可以使用带有Backbone.Marionette扩展名的Handlebars.js而无需重新实现Views渲染功能?似乎Marionette依赖于你使用带有下划线模板引擎的Backbone.js的约定。但我真的很喜欢把手的方法,所以我问我是否可以使用把手来装木偶的高级工具。
答案 0 :(得分:24)
在Marionette中使用Handlebars的一种简单方法就是将每个View中的template
定义为预编译的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
和另一个带有requirejs + Marionette + Handlebars的Q / A预编译:Using precompiled handlebars templates with Marionette
答案 1 :(得分:6)
@brettjonesdev是正确的,但我发现其他另外一个很好用的是:
var MyView = Backbone.Marionette.ItemView.extend({
template: Handlebars.compile($("#assign-products-main-view").html()),
model: new Backbone.Model({name: "Steve"})
});
这有助于搜索DOM。
答案 2 :(得分:3)
我们也可以在这里使用预编译模板。
var MyView = Backbone.Marionette.ItemView.extend({
template: Handlebars.templates['filename'],
model: new Backbone.Model({name: "Steve"})
});
这样我们就可以从Marionette中删除编译角色。
答案 3 :(得分:2)
目前的两个答案都没有利用缓存。使用此要点instead.