将模型传递给 LayoutView Backbone.Marionette
Passing a model to a LayoutView Backbone.Marionette
我正在尝试将 model 传递给 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 is not defined" 因为模型没有被正确映射。
我该如何处理?
当您第一次看到您的布局代码时,扩展函数会运行并接受您的所有选项,此时我想 App.EditModel
尚不存在,因此模型存储为 undefined
如果您想将模型传递给您的 LayoutView
,那么您应该在实例化它时执行此操作,即 new Layout({model: this.model});
我正在尝试将 model 传递给 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 is not defined" 因为模型没有被正确映射。
我该如何处理?
当您第一次看到您的布局代码时,扩展函数会运行并接受您的所有选项,此时我想 App.EditModel
尚不存在,因此模型存储为 undefined
如果您想将模型传递给您的 LayoutView
,那么您应该在实例化它时执行此操作,即 new Layout({model: this.model});