2014-04-19 47 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的问题以加强我学到的东西。很高兴我能帮上忙! –