在ArrayController模型中保持运行总值的计算属性

时间:2013-10-17 19:06:29

标签: ember.js

我有一个数组控制器,其中包含一个包含数字量(即美元值)的模型列表。

最初,模型包含1行,金额为0,因为用户将行添加到模型中,并更改我希望在列表底部保持运行总计的金额。

我与Ember合作大约需要4个小时,我不太明白如何在计算属性中迭代模型并返回总和,最重要的是,在我向模型添加值时重新计算。 / p>

我正在尝试使用的是:

totalLoanAmount: function() {
 var t = 0;
  var amounts = this.get('content.@each.amount').toArray(); 
  for (index = 0; index < amounts.length; index++) {
      t += amounts[index];
  }

return t;
}.property('content.@each.amount'),

但是当我向模型添加项目时,这似乎没有更新。

1 个答案:

答案 0 :(得分:1)

依赖关键部分对我来说是正确的。 但我不相信你可以使用@each以你在代码的第三行上尝试的方式映射属性。 编辑:好的,结果证明你我可以做到这一点虽然我找不到任何文件表明这是推荐或预期的。

我认为快速解决方法是使用var amounts = this.get('content').mapBy('amount')

但是你也可以考虑使用Ember的reduce功能重构这个函数,如演示here