2011-10-21 68 views
0

如果兩個值-a或b中的任何一個在我的模型中發生變化,則兩個偵聽視圖需要計算第三個值c。Backbone.js模型中的從屬屬性

//Pseudo 
mainModel 
    a : 2000 
    b : 3000 

view1 
helper.calculateC(this.model.get(a), this.model.get(b)) 

view2 
helper.calculateC(this.model.get(a), this.model.get(b)) 

我寧願把相關的屬性c。在模型(作爲 計算是相當複雜和「c」可能以後被允許是 用戶覆蓋。)什麼是好的做法呢?我應該擴展 模型,建立一個子模型還是什麼?

謝謝!

回答

5

您可以將model上的綁定添加到初始化調用上自己的更改事件中。

initialize: function() { 
    this.bind("change", this.calculateC); 
}, 

calculateC: function() { 
    this.c = //fill in the blanks 
}  

更具體地說,你只能綁定你需要的屬性。

this.bind("change:a", this.calculateC); 
    this.bind("change:b", this.calculateC); 
+0

但是那麼在模型更改事件之前C不會被計算嗎?因此,這些視圖將無法訪問c的最新值。或者你的意思是模型可以在發佈變更事件之前計算出來嗎?謝謝。 – dani

+0

以上似乎工作:)但我不明白如何在視圖之前通知模型? (並且:如果我想將「c」設置爲模型的屬性併爲其更改火災事件,我該怎麼辦?)感謝! – dani

+0

您首先得到事件,因爲您是第一個將自己的變更事件掛鉤的人。 Initialize在構造函數中被調用,所以你知道你是第一個將它鉤住的... –