2014-04-19 44 views
1

有一段時間我現在正在使用Ember js,到目前爲止我喜歡它。不幸的是我遇到了一個問題。Ember.js綁定到從控制器的Ember.Object中的計算屬性不起作用

我想顯示和更新控制器中的屬性,基於Ember對象中的屬性。

一個鏈接到一個jsbin低於

jsbin

對象表示具有兩個值的項目,併爲每個值的計數。 當屬性的計數發生變化時,會計算該項目的新總數(countA * valueA + countB * valueB)。 我在這個例子中做了4個項目。

每當它們中的任何一個的計數發生變化時,我也想要改變這4個項目的總數。 我通過在控制器中定義一個屬性來做到這一點。該屬性似乎在初始加載時顯示,但在更新計數時不會更新。

我想把這個值綁定到Ember對象上就可以了,但我似乎無法讓它工作。

任何幫助將不勝感激。

回答

0

您目前正在將totalBoth變量綁定到類定義,而不是類的實例,它只是不會工作。你想要做的是觀察任何實例的變化。

看看這個更新JSBin:http://jsbin.com/cuqitufo/6/edit

訣竅是使用@each property for aggregate data

所以,你不再需要的結合,你只觀察每個實例的calculatedTotal:[email protected]

totalBoth : function(){ 
    var total = 0; 
    App.TypeNumbers.forEach(function(item){ 
    console.log(item.get('calculatedTotal')); 
    total += item.get('calculatedTotal'); 
    }); 
    return total; 
}.property('[email protected]'), 
+0

你使它看起來那麼容易:)。非常感謝,這真的幫了我。 – rbevers

+0

哈哈。是的..自從11月份以來,我一直在玩Ember,最近試圖回答StackOverflow的問題以加強我學到的東西。很高興我能幫上忙! –