如何在集合中找到特定模型属性的总和?

时间:2013-08-26 05:41:25

标签: javascript backbone.js backbone-events

如何在集合的模型中找到特定属性的总和?

var myModel = Backbone.Model.extend({ });

var myCollection = Backbone.Collection.extend({
    model :  myModel,
});

每当模型中的值发生变化时,我都必须显示所有值的总和。

例如,我在集合中有10个模型,模型中有一个名为amount的属性。每当属性获得新值时,我都应该显示amount的总数。

我使用的代码:

debitAmountTotal: function(){
    return this.reduce(function(memo, value) {
        return memo + value.get("amountTcy");
    }, 0);
}

但是这会连接值:如果第一个值是8而第二个值是8,那么结果是88而不是16

2 个答案:

答案 0 :(得分:2)

  1. 将默认值0指定给每个模型中的金额。
  2. changed事件绑定到集合的模型,然后添加/删除集合。
  3. 对于changed事件,请使用underscore.js的reduce方法迭代集合并查找金额总和。

答案 1 :(得分:0)

debitAmountTotal: function(){
    return this.reduce(function(memo, value) {
        return memo + Number(value.get("amountTcy"));
    }, 0);
}