2

我试图简单地将我在 PHP 中的请求返回到 JSON。我的问题是每个 Stock 尚未完成。实际上,它是“渲染”,但“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 () {
        ;
    }
});
4

1 回答 1

7

renderfetch完成之前。你想要做的是等待fetch完成,然后render. 现在您将如何获得完成时间的通知fetch?您有 2 个选项:

成功功能(我不推荐)

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

现在,当获取成功时,render调用。然而,这可能会导致范围问题,Backbone.js 为回调函数提供了一个更好的替代方案:事件

事件回调(首选这个)

// ArticlesView
initialize: function() {
  _.bindAll(this);
  this.collection = new Articles();
  this.collection.on('reset', this.render); // bind the reset event to render
  this.collection.fetch();
}
于 2012-09-06T09:49:48.827 回答