余烬数据过滤器

时间:2013-02-25 00:36:56

标签: ember.js filtering ember-data

如果我有这样的模特

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

其中type可以是“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方法或某种方法来获取我可以过滤的数组中的所有事务对象?

1 个答案:

答案 0 :(得分: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类型,并像以前那样进行总计算。