0

我试图在获取集合后调用渲染。

在我的初始化方法中,我有:

this.collection.bind('all', this.render, this);
this.collection.fetch();

在 IE 中,它似乎有时会在集合有数据之前尝试呈现。集合似乎没有可以绑定的“更改”事件,是否有更好的方法来确保在渲染之前已获取集合?

谢谢!

编辑:

如果我刷新页面,它似乎总是可以工作,但是如果我再次单击地址栏并加载页面,它就不会工作。

4

4 回答 4

2

如果你想保证在渲染之前已经获取了数据,那么我建议使用 jQuery 的deferred对象:

this.collection.deferred = this.collection.fetch();
self = this;
this.collection.deferred.done(function() {
    self.collection.render();
  }
);

基本上,您放入发送到的函数中的任何内容done都只会在fetch 完成后调用。

更多关于延期:

于 2012-07-21T08:17:05.477 回答
0

以下绝对应该有效,它对我有用......

而不是下面的

this.collection.fetch();

用这个

this.collection.fetch(async: false);
于 2013-06-28T15:03:03.143 回答
0

查看 Backbone 的事件目录听起来你想听重置事件

于 2012-07-20T19:39:44.193 回答
0

以下应该有效:

this.collection.on('reset', this.render);
this.collection.fetch();

通常在 Backbone.js 中,人们会使用 on() 将回调绑定到对象。

于 2012-07-20T19:43:27.903 回答