Collections 主干网u.each collection.model为空

Collections 主干网u.each collection.model为空,collections,backbone.js,model,Collections,Backbone.js,Model,我试图简单地将PHP中的请求返回到JSON。 我的问题是每只股票都还没有完成。 实际上,它是“呈现”,但“this.collection.models”尚未完成,因为请求尚未完成 我应该做些什么来纠正这个问题,等待请求完成,以便正确地完成循环 先谢谢你 var Article = Backbone.Model.extend({}); var Articles = Backbone.Collection.extend({ model:Article, url: function(

我试图简单地将PHP中的请求返回到JSON。 我的问题是每只股票都还没有完成。 实际上,它是“呈现”,但“this.collection.models”尚未完成,因为请求尚未完成

我应该做些什么来纠正这个问题,等待请求完成,以便正确地完成循环

先谢谢你

var Article = Backbone.Model.extend({});

var Articles = Backbone.Collection.extend({
    model:Article,
    url: function() {
        return _BASE_URL+'/sync/getLastArticles';
    },
    initialize:function () {
        this.fetch();
    }
});

var ArticlesView = Backbone.View.extend({
    template:$('#articles').html(),

    initialize:function () {
        this.collection = new Articles();
        this.render();
    },

    render:function () {
        console.log(this.collection);
        var that = this;
        _.each(this.collection.models, function (item) {
            console.log(item);
        }, this);
    },

    renderArticle:function () {
        ;
    }
});

在执行
提取操作之前,您需要进行
渲染
。您要做的是等待
获取
完成,然后
渲染
。现在,您将如何获得
fetch
完成时的通知?您有两种选择:

(我不推荐)

现在,当获取成功后,将调用
render
。但是,这可能会导致范围问题,Backbone.js提供了回调函数更好的替代方法:事件

(更喜欢这个)

// ArticlesView
initialize: function() {
  _.bindAll(this); // Don't forget to BIND
  this.collection = new Articles();
  this.collection.fetch({
    success: this.render
  });
}
// ArticlesView
initialize: function() {
  _.bindAll(this);
  this.collection = new Articles();
  this.collection.on('reset', this.render); // bind the reset event to render
  this.collection.fetch();
}