填充后收集Backbone.js调用渲染

时间:2012-07-20 18:39:51

标签: javascript backbone.js

我正在尝试在获取集合后调用render。

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

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

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

谢谢!

编辑:

如果我刷新页面,它似乎总是有效,但是如果我再次点击地址栏并加载页面,它就无法工作。

4 个答案:

答案 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);