我期待着執行以下操作。我想在第2列的計算函數中使用第1列中的總數。有沒有一種簡單的方法可以用knockout和jquery來做到這一點?淘汰賽在同一個表中的另一個計算中使用總計一列
col1 | col2
---------------------------
1 | .21 * col1_total
10 | .25 * col1_total
20 | .31 * col1_total
----------------------------
col1_total| col2_total
爲更好的例子添加代碼。問題在於self.col3。 self.col1total不可用於代碼的該部分。我該如何解決這個問題?
function custdata(data) {
var self = this;
self.col1= ko.observable(data.col1);
self.col2= ko.observable(data.col2);
self.col3= ko.computed(function(){
return self.col1() * self.col1total();
});
}
function guideviewmodel() {
var self = this;
self.custlist = ko.observableArray([]);
self.col1total = ko.computed(function() {
var total = 0;
$.each(self.custlist(), function() { total += this.col1(); });
return total;
});
self.custlist.removeAll();
$.getJSON(callPath + "/api/xxx?guid=" + $("#lblFilteredID").text(), function (allData) {
var mappedLogs = $.map(allData, function (item) { return new custdata(item) });
self.custlist(mappedLogs)
});
}
你看看ko.computed了嗎? (http://knockoutjs.com/documentation/computedObservables.html) –
要在函數(data)(映射部分)中使用ko.computed,則無法訪問從視圖模型部分獲取總數的ko.computed函數。因此,直到使用該方法生成行之後纔會計算總數。我種類的解決方法是調用同一個數組兩次,一次得到總數。然後將其分配給標籤,然後在數據映射部分中引用該標籤。它雖然笨重,似乎並不總能奏效。 – user1813251