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