现在我和Ember js合作了一段时间,到目前为止,我喜欢它。不幸的是,我遇到了一个问题。
我试图根据Ember对象中的属性显示和更新控制器中的属性。
jsbin的链接位于
之下对象表示具有两个值的项目以及每个值的计数。 更改属性的计数时,将计算项目的新总计(countA * valueA + countB * valueB)。 我在示例中为4个项目执行此操作。
每当对其中任何一个的计数发生变化时,我也想更改4个项目的总数。 我通过在控制器中定义属性来做到这一点。该属性似乎在初始加载时显示,但在更新计数时不会更新。
我认为将值绑定到Ember对象可以解决问题,但我似乎无法使其正常工作。
非常感谢任何帮助。
答案 0 :(得分:0)
您目前正在将totalBoth
变量绑定到类定义,而不是类的实例,它只是不起作用。您要做的是观察任何实例中的更改。
查看此更新的JSBin:http://jsbin.com/cuqitufo/6/edit
诀窍是使用@each property for aggregate data。
因此您不再需要绑定,只需观察每个实例的calculatedTotal:App.TypeNumbers.@each.calculatedTotal
:
totalBoth : function(){
var total = 0;
App.TypeNumbers.forEach(function(item){
console.log( item.get('calculatedTotal') );
total += item.get('calculatedTotal');
});
return total;
}.property( 'App.TypeNumbers.@each.calculatedTotal' ),