0

我有一个呈现主干视图的路由器。(我也在使用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();
    }

但是,当我运行渲染函数时, crateCollection 是未定义的,并且 JS 错误“无法访问未定义的模型”

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

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

我错过了什么?

4

1 回答 1

2

使用内部initialize_View

this.crateCollection = models.model; 

代替

var crateCollection = models.model; 

我认为存在范围问题crateCollection

于 2013-07-30T07:28:26.020 回答