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

8i9zcol2  于 2022-11-24  发布在  其他
关注(0)|答案(1)|浏览(147)

我面临以下挑战:
我希望在每次获取数据时实现一个加载花。
我的引导代码如下所示:

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()或其他方法似乎不可能。

2exbekwf

2exbekwf1#

你也许应该重新组织你的结构,将集合设置为视图模型不是很明显。也许你应该添加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);
}

相关问题