我正在尝试在一个视图中使用两个模型,并使用它们两个模板。我和Marionette一起工作。这是我对视图的初始化:
main_app_layout.header.show(new APP.Views.HeaderView({
model: oneModel,
model2 : twoModel}
));
以下是我的观点:
APP.Views.HeaderView = Backbone.Marionette.ItemView.extend({
template : '#view_template',
className: 'container',
initialize: function() {
//This correctly logs the second model
console.log(this.options.model2);
}
});
这是模板:
<script id="view_template" type="text/template">
<p>{{twoModel_label}} {{oneModel_data}}</p>
<p>{{twoModel_label2}} {{oneModel_data2}}</p>
</script>
它使用oneModel数据正确呈现所有内容,但不会呈现第二个,即使它正确记录它。我正在使用胡子作为我的模板语言。
有人可以帮忙吗?
答案 0 :(得分:16)
您可以覆盖视图中的serializeData
方法,并让它返回两个模型的数据:
APP.Views.HeaderView = Backbone.Marionette.ItemView.extend({
// ...
serializeData: function(){
return {
model1: this.model.toJSON(),
model2: this.options.model2.toJSON()
};
}
});
然后你的模板看起来像这样:
<script id="view_template" type="text/template">
<p>{{model1.label}} {{model1.data}}</p>
<p>{{model2.label}} {{model2.data}}</p>
</script>
答案 1 :(得分:0)
尝试创建一个包含两个模型的复杂模型,这个新模型将另外两个作为属性,你可以按照这个答案解释每个属性的属性。
Access Nested Backbone Model Attributes from Mustache Template