Backbone.js - 集合请求事件未触发

时间:2016-02-26 09:33:50

标签: javascript ajax backbone.js

我有以下挑战:

我想在每次获取数据时实现加载花。

我的引导代码如下所示:

var myCollection = new MyCollection({});
myCollection.fetch({
        success: function () {
            var listView = new ListView({model: myCollection});
        }
});

我的视图如下所示:

var ListView = Backbone.View.extend({
    ...

    initialize: function () {
        this.model.bind('request', this.ajaxStart, this);
        this.model.bind('sync', this.ajaxComplete, this);
        self.render();
    },
});

我的问题:request事件未被触发,因为当时请求已开始,ListView尚未设置。

我试图更改我的引导代码但到目前为止没有任何工作。这总是chicken or the egg问题。要么我把视图设置在正确的位置,要么我有数据。

我尝试将collection实例传递给视图,但这似乎无法通过set()或其他方法实现。

THX 罗恩

1 个答案:

答案 0 :(得分:1)

您可能应该重新组织您的结构,将集合设置为视图模型并不是很明显。也许你应该添加ListModel,它将处理你的集合实例化和更新,然后设置你的视图来监听你的ListModel自定义事件。至于鸡/蛋问题

var myCollection = new MyCollection();
var myView = new MyView({
  collection: myCollection,
});

myCollection.fetch();

// inside your view
initialize: function() {
  this.listenTo(this.collection, 'sync', this.render);
}