2012-06-07 177 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>