我試圖在獲取集合後調用渲染。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