我與財產「費」灰燼計算從模型數組屬性
fees: DS.hasMany('fee')
,並與物業「量」
amount: DS.attr('string')
在我的控制器
我要計算費用模型的模型財產,加起來的所有費用金額,所以我有這個
feeTotal: Ember.computed('[email protected]', function() {
var total = 0;
this.get('model').get('fees').forEach(function(fee) {
total += Number(fee.get('amount'));
});
return total;
})
這將計算費用最初,並recompu如果增加新費用,但在費用金額發生變化時不會重新計算費用。例如,更改以下輸入字段將更新金額,但不會計算總計。
{{#each model.fees as |fee|}}
{{input value=fee.amount type="number" placeholder="Fee Amount"}}
{{/each}}
我在計算屬性寫入的方式中缺少一些東西嗎?
如果將DS.attr('string')更改爲DS.attr('number'),它會工作嗎? –
不,它不會改變結果。問題在於它無法識別屬性的變化,無論它是字符串還是數字。 – cswright
代碼對我來說看起來不錯,雖然我在這裏看到問題,在升級ember後提到類似的問題。如果你變得非常絕望,你可以嘗試'''Ember 2.0'''。我只能提供的是,您可以使用[reduce](http://emberjs.com/api/classes/Ember.Enumerable.html#method_reduce)計算總和和類似的東西,並基本上使計算函數成爲一行。 – Keo