2011-11-10 30 views
0

我想在從遠程服務器異步加載集合時呈現視圖。我有以下的集合類更正異步數據檢索時的Backbone.js收集事件

class BusinessUnits extends Backbone.Collection 
    model: BusinessUnit 

    parse: (units) -> 
    units 

然後我認爲我這樣做:

load: (businessUnits) => 
    @collection = businessUnits 
    @collection.fetch() 
    @render() 

顯然渲染()的獲取完成之前將被調用。

是否有一個backbone.js事件在每次獲取集合時觸發,或者我會更好地觸發自己的事件?

這似乎是一個非常常見的情況。人們如何處理這種情況?

回答

5

我認爲"reset" event是你在找什麼。

「重置」(集合) - 集合的全部內容已被替換時。

這將在提取完成後觸發。

load: (businessUnits) => 
    @collection = businessUnits 
    @collection.bind 'reset', => @render() 
    @collection.fetch() 
+1

+1,雖然你並不需要創建匿名函數:'@collection.bind「復位」,@ render' –

+0

@BrianGenisio:這是行不通的,因爲那麼渲染會失去它的範圍,沒有? Collection.bind不會將範圍綁定到當前對象(或者是否)? – Thilo

+1

根據skeleton.js文檔'在調用回調時爲此提供上下文值,傳遞可選的第三個參數:':'@collection.bind'reset',@render,@' – Thilo