Ember.js 在ArrayController';s模型

Ember.js 在ArrayController';s模型,ember.js,Ember.js,我有一个数组控制器,其中包含一个数字量(即美元值)的模型列表 最初,模型包含一行,行数为0,因为用户向模型中添加行,并更改了我希望在列表底部保留一个运行总数的行数 使用Ember大约4个小时了,我不太明白如何在计算属性中迭代模型并返回总和,最重要的是,在向模型添加值时重新计算 我想用的是: totalLoanAmount: function() { var t = 0; var amounts = this.get('content.@each.amount').toArray();

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

最初,模型包含一行,行数为0,因为用户向模型中添加行,并更改了我希望在列表底部保留一个运行总数的行数

使用Ember大约4个小时了,我不太明白如何在计算属性中迭代模型并返回总和,最重要的是,在向模型添加值时重新计算

我想用的是:

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'),
totaloanamount:function(){
var t=0;
var amounts=this.get('content.@each.amount').toArray();
对于(索引=0;索引

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

我认为依赖的关键部分是正确的。但是我不相信您可以使用
@each
以您在代码第三行尝试的方式映射属性。编辑:好的,事实证明你可以这样做,尽管我找不到任何文档表明这是推荐的或预期的

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


但是您也可以使用Ember的
reduce
功能重构此函数,正如所演示的那样。

依赖的关键部分在我看来是正确的。但是我不相信您可以使用
@each
以您在代码第三行尝试的方式映射属性。编辑:好的,事实证明你可以这样做,尽管我找不到任何文档表明这是推荐的或预期的

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

但您也可以使用Ember的
reduce
功能重构此函数,如所示