淘汰计算总和

时间:2012-06-07 21:43:23

标签: knockout.js knockout-mapping-plugin

我从WCF接收数据并将其绑定到表。我在这个论坛上得到了帮助,可以添加一些计算字段,一切都很完美。我想在这张桌子的页脚上添加一个总数。我的页面的简单版本可以在http://jsfiddle.net/qeUHd/3/看到。基本上我想学习如何向我的ViewModel添加一个字段,该字段是我的样本中另一个字段的总和的结果" Amount"。任何帮助将不胜感激。 http://jsfiddle.net/qeUHd/3/

2 个答案:

答案 0 :(得分:11)

在您的小提琴中,您将数据集映射到self.model,因此self.model是observableArray。既然如此,我只需要整理一个computed value来获得你的总数。

http://jsfiddle.net/qeUHd/5/

self.total = ko.computed(function(){
    var total = 0;
    for(var p = 0; p < self.model().length; ++p)
    {
        total += self.model()[p].Amount();
    }
    return total;
});

然后确保绑定它。

<td data-bind="text: total">

你做的事情有点落后,但我认为这是由于你接收数据的方式,所以我处理了它并继续前进。

答案 1 :(得分:1)

虽然我通常会建议并支持将这些类型的计算字段放入视图模型中(因为它们通常属于它们),但有时您使用的数据很难添加额外的计算属性。例如,如果要在视图中对数据进行分组。在这种情况下,您仍然可以显示总计,但将计算移至视图:

<td data-bind="text: $data.reduce(function(x,y) { return x + y.Amount(); }, 0)"></td>