0

我已经习惯了使用 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);
            }
        });
4

1 回答 1

1

您需要将模型作为选项哈希传递,而不仅仅是 MyDetailView 的第一个参数,如下所示:

var view = new MyDetailView({ model: model });

也供将来参考 Marionette 在 Marionette.View 构造函数中执行 _.bindAll 渲染。

于 2013-11-05T18:30:11.053 回答