我正在尝试在获取集合后调用render。
在我的初始化方法中,我有:
this.collection.bind('all', this.render, this);
this.collection.fetch();
在IE中,似乎有时它会在集合有数据之前尝试渲染。集合似乎没有可以绑定的“更改”事件,是否有更好的方法来确保在呈现之前获取集合?
谢谢!
编辑:
如果我刷新页面,它似乎总是有效,但是如果我再次点击地址栏并加载页面,它就无法工作。
答案 0 :(得分:2)
如果你想保证在渲染数据之前已经获取了数据,那么我建议使用jQuery的deferred
对象:
this.collection.deferred = this.collection.fetch();
self = this;
this.collection.deferred.done(function() {
self.collection.render();
}
);
基本上,您发送到done
的函数中的任何内容只有在 fetch完成后才会被称为。
有关延期的更多信息:
答案 1 :(得分:0)
看看Backbone的Catalog of Events听起来好像你想听reset事件
答案 2 :(得分:0)
以下内容应该有效:
this.collection.on('reset', this.render);
this.collection.fetch();
通常在Backbone.js中,可以使用on()将回调绑定到对象。
答案 3 :(得分:0)
以下应该绝对有用,它对我有用......
而不是下面的
this.collection.fetch();
使用此
this.collection.fetch(async: false);