2012-07-20 50 views
0

我試圖在獲取集合後調用渲染。Backbone.js在收集完成後調用渲染

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

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

在IE似乎有時它試圖渲染,收集資料之前。集合似乎沒有可以綁定的「更改」事件,是否有更好的方法來確保集合在渲染之前被提取?

謝謝!

編輯:

如果我刷新頁面,它似乎總是工作,但是如果我在地址欄再次點擊和頁面加載,它不會永遠工作。

+0

重置事件是你在找什麼? – nikoshr 2012-07-20 18:50:14

+0

嗯,看起來並不像它,所以我先從一個空集合開始,然後使用fetch()來填充它。之後,我想調用渲染 – dzm 2012-07-20 18:57:37

+0

上面添加了一個額外的註釋,它僅在您從地址欄直接轉到時才隔離,如果我刷新頁面 - 它可以工作。 – dzm 2012-07-20 19:08:11

回答

2

如果你想保證數據已被提取的渲染之前,那麼我建議使用jQuery的deferred對象:

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

基本上什麼你把函數發送到done纔會被調用取回完成後就完成了。

更多deferreds:

+0

+1 Awesome。謝謝 – Trip 2012-07-22 17:41:34

0

下面應該工作:

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

通常在Backbone.js的人會使用上()綁定一個回調一個東西。

0

下肯定應該工作,它的工作對我來說...

,而不是下面

this.collection.fetch(); 

使用

this.collection.fetch(async: false);