Backbone视图中未定义集合的问题

时间:2013-07-30 07:17:22

标签: backbone.js collections requirejs

我有一个呈现骨干视图的路由器。 (我也在使用requirejs)

    initialize: function () {
        var crateCollection = new CrateCollection();
        crateCollection.fetch({
            success: function()
            {
                var cratesView = new CratesView({ model: crateCollection });
            }
        });
    }

在视图的初始化中,集合很好,我可以将它输出到console.log并查看它是否已正确填充。

    initialize: function (models) {
        var crateCollection = models.model;
        console.log(crateCollection);
        this.render();
    }

但是,当我运行render函数时,crateCollection未定义且JS错误带有“无法访问undefined模型”

    render: function () {
        $(this.el).html(this.template());
        var that = this;
        console.log(this.crateCollection);
        _.each(this.crateCollection.models, function (item) {
            that.renderCrate(item);
        }, this);
    },

为什么无法从此功能访问此集合?它应该填充,因为它等待异步调用在初始化视图之前返回成功,所以它们不应该是那里的任何问题。

我错过了什么?

1 个答案:

答案 0 :(得分:2)

initializeView使用

this.crateCollection = models.model; 

而不是

var crateCollection = models.model; 

我认为crateCollection存在范围问题。