我正在尝试将模型传递给 LayoutView ,以便可以在视图中编辑特定的模型属性。
在我的 ItemView 中,我有一个事件可以抓取所选模型并将其分配给我的全局应用程序 -
var ItemView = Backbone.Marionette.ItemView.extend({
template: _.template(ItemTemplate),
tagName: "tr",
attributes: function(){
return {
"id": this.model.get('id'),
"class": "tr"
};
},
events: {
"click #edit" : "edit"
},
edit: function() {
App.EditModel = this.model;
console.log(App.EditModel); // <-- prints out the model successfully
App.trigger('edit');
}
})
然后,我在编辑视图中使用App.EditModel传递给我的模板 -
var Layout = Backbone.Marionette.LayoutView.extend({
model: App.EditModel,
template : _.template(EditTemplate),
regions : {
"HomeRegion": "#home"
}
});
return Layout;
});
在我得到的浏览器中 - “Uncaught ReferenceError:firstName未定义”,因为模型未正确映射。
我应该如何处理?
答案 0 :(得分:0)
首次看到你的布局代码时,扩展函数会运行所有选项,此时我想App.EditModel
尚不存在,因此模型存储为undefined
如果您想将模型传递给LayoutView
,那么您应该在实例化时执行此操作,即new Layout({model: this.model});