我已经习惯使用Backbone和Marionette并遇到一些障碍,我相信我忽略了一些东西。我正在尝试用我的API中的模型填充我的ItemView,我可以看到请求和数据返回正常但我得到一个类型错误:obj未定义在看起来像我的听众:
TypeError: obj is undefined
var id = obj._listenerId || (obj._listenerId = _.uniqueId('l'));
这是我的模型/视图
var MyDetailView = Marionette.ItemView.extend({
template: '#my-item-detail',
initialize: function () {
_.bindAll(this, 'render');
// bind the model change to re-render this view
this.listenTo(this.model, 'change', this.render);
},
tagName: "div"
})
var MyModel= Backbone.Model.extend({ urlRoot: '/api/model', intialize: function () { } });
我要执行的代码:
var m = new MyModel({ id: 123});
m.fetch({
success: function (model, response) {
var view = new MyDetailView (model);
layout.content.show(view);
}
});
答案 0 :(得分:1)
您需要将模型作为选项哈希传递,而不仅仅是将第一个参数传递给MyDetailView,如下所示:
var view = new MyDetailView({ model: model });
同样为了将来的参考,Marionette在Marionette.View构造函数中使用render进行_.bindAll。