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