2

如果我有一些这样的模型

App.Transaction = DS.Model.extend({
    amount: DS.attr('number'),
    type: DS.attr('string')
});

其中类型可以是“VISA”或“Mastercard”或“Cash”之类的东西。我有一个计算属性来计算所有交易的总金额。

totalAmount:function() {
    return this.getEach('amount').reduce(function(accum, item) {
        return (Math.round(accum*100) + Math.round(item*100))/100;
    }, 0);
}.property('@each')

我想要做的是创建另一个计算属性,该属性返回按类型分组的所有交易的总金额(例如,类型 ==“VISA”的所有交易的总金额)。

如何在 Ember js 中执行此操作?是否有一个 getAll 方法或某种方法来获取我可以过滤的数组中的所有事务对象?

4

1 回答 1

2

Ember.Array类具有filterProperty方法,可以为您执行此操作。你可以这样称呼它:

visaTotalAmount: function() {
    return this.filterProperty('type', 'VISA').getEach('amount').reduce(function(accum, item) {
        return (Math.round(accum*100) + Math.round(item*100))/100;
    }, 0);
}.property('@each')

这将只过滤掉 VISA 类型并像以前一样进行总计算。

于 2013-02-25T02:41:59.160 回答