把手:模板内有多个模型

时间:2014-11-29 20:02:04

标签: javascript backbone.js handlebars.js

我开始使用Handlebars,并且想知道:

  

是否有可能将多个模型传递给视图?

我将带有$(template(model))的模型传递给视图:

    var source = $('#template').html();
    var template = Handlebars.compile(source);
    var model = this.model.toJSON();
    $(template(model)).appendTo(this.$parent);

所以我可以将一个带有存储的JSON数据的变量传递给视图。但是,如果我想在一个模板中有两个不同的变量/模型呢?

这可能吗?这比生成另一个模板并加载到另一个模板要容易得多。

1 个答案:

答案 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置于某个地方,以便你的视图可以自包含。