2015-11-20 87 views
0

我有一個模型,它是集合的一部分,並從api中檢索數據。此模型包含(除其他屬性)以下屬性:動態更新主幹模型屬性

updatedDate //-> value retreived from API/DB 
lastUpdateAttempt //-> value retrieved from API/DB 
status //-> value NOT retrieved from API/DB, depends on values of above two attributes ("updated", "error", "out of date", etc...). 

我的問題是,如何/何時應該設置狀態屬性?有沒有一種方法可以在嘗試檢索值時動態設置狀態? (即modelObj.get(「status」) - >調用函數來計算值,返回結果)。或者我應該從視圖中調用一個函數來初始化更新這個屬性,然後添加一個事件監聽器,這個監聽器在變化時也是這樣做的? (< - 不知何故似乎不是最好的解決方案)

我有一種感覺,我正在推翻這一點,並且有一個真正實用的方法來做到這一點,但我對Backbone仍然有點缺乏經驗。

謝謝。

回答

0

您可以設置狀態的初始值,並在初始化模型時偵聽對updatedDatelastUpdateAttempt的進一步更改。

喜歡的東西

Backbone.Model.extend({ 
    initialize: function(){ 
    this.updateStatus(); 
    this.on("change:updatedDate change:lastUpdateAttempt",this.updateStatus); 
    }, 
    updateStatus: function(){ 
    // your logic 
    } 
}); 

或者你可以嘗試這種奇怪的方式(不是在所有測試,只是一個念頭),這有點像更新狀態,同時訪問它。如果你想控制狀態更新的頻率可能會有所幫助。 (如果你很可能會進入狀態比變化的數量少的方式很可能與其他兩個屬性發生)

Backbone.Model.extend({ 
    initialize: function(){ 
    this.updateStatus(); 
    this.on("updateStatus",this.updateStatus); 
    }, 
    updateStatus: function(){ 
    // your logic 
    } 
}); 

和訪問狀態一樣,model.trigger('updateStatus').get('status')

+0

這個工作!然而,我仍然有一個問題是在fetch(),updateStatus()不會被調用。所以我給調用updateStatus()的集合添加了一個「add」事件監聽器, –