我试图在获取集合后调用渲染。Backbone.js在收集完成后调用渲染
在我的初始化方法,我有:
this.collection.bind('all', this.render, this);
this.collection.fetch();
在IE似乎有时它试图渲染,收集资料之前。集合似乎没有可以绑定的“更改”事件,是否有更好的方法来确保集合在渲染之前被提取?
谢谢!
编辑:
如果我刷新页面,它似乎总是工作,但是如果我在地址栏再次点击和页面加载,它不会永远工作。
我试图在获取集合后调用渲染。Backbone.js在收集完成后调用渲染
在我的初始化方法,我有:
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
才会被调用取回完成后就完成了。
更多deferreds:
+1 Awesome。谢谢 – Trip 2012-07-22 17:41:34
看着骨干Catalog of Events听起来像是你要听reset事件
下面应该工作:
this.collection.on('reset', this.render);
this.collection.fetch();
通常在Backbone.js的人会使用上()绑定一个回调一个东西。
下肯定应该工作,它的工作对我来说...
,而不是下面
this.collection.fetch();
使用
this.collection.fetch(async: false);
重置事件是你在找什么? – nikoshr 2012-07-20 18:50:14
嗯,看起来并不像它,所以我先从一个空集合开始,然后使用fetch()来填充它。之后,我想调用渲染 – dzm 2012-07-20 18:57:37
上面添加了一个额外的注释,它仅在您从地址栏直接转到时才隔离,如果我刷新页面 - 它可以工作。 – dzm 2012-07-20 19:08:11