2012-06-07 131 views
6

我从WCF接收数据并将其绑定到表。我已经在这个论坛中帮助添加了一些计算领域,并且一切都很完美。我想在此表的页脚添加总计。我的页面的简单版本可以在http://jsfiddle.net/qeUHd/3/看到。基本上我想学习如何添加一个字段到我的ViewModel,这是我的示例“Amount”中另一个字段的总和的结果。任何帮助将不胜感激。 http://jsfiddle.net/qeUHd/3/敲除计算金额

回答

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"> 

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

+0

非常感谢你,我开始理解淘汰赛逻辑感谢这里的专家的真棒团队。 –

1

尽管我通常会建议并支持将这些计算字段放入视图模型中(因为这通常是它们所属的位置),但有时您正在处理难以添加额外计算属性的数据。一个例子就是如果你在视图中分组你的数据。在这种情况下,你仍然可以显示你的总,但移动计算的观点:

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