我有以下挑战:
我想在每次获取数据时实现加载花。
我的引导代码如下所示:
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 罗恩
答案 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);
}