我开始使用Handlebars,并且想知道:
是否有可能将多个模型传递给视图?
我将带有$(template(model))
的模型传递给视图:
var source = $('#template').html();
var template = Handlebars.compile(source);
var model = this.model.toJSON();
$(template(model)).appendTo(this.$parent);
所以我可以将一个带有存储的JSON数据的变量传递给视图。但是,如果我想在一个模板中有两个不同的变量/模型呢?
这可能吗?这比生成另一个模板并加载到另一个模板要容易得多。
答案 0 :(得分:4)
已编译的Handlebars模板只需要一个对象作为其参数,您可以根据需要构建该对象。如果你想要两个模型,只需添加一个额外的间接级别:
var html = template({
model: this.model.toJSON(),
other: this.other_model.toJSON()
});
然后在模板中你可以说:
{{model.attribute}}
{{other.other_attribute}}
之类的。
顺便说一句,将骨干添加到this.$el
以外的任何内容(即this.$parent
)的Backbone视图有点狡猾。事件绑定到this.$el
,因此如果没有帮助,事件将无法运行。如果你稍微改变一下,你可能会更容易一次,以便父视图将你的视图$el
置于某个地方,以便你的视图可以自包含。