我想計算所選行的分組行的子總數,我能夠計算,但通過循環所有元素,每次更改總計算。任何人都可以建議如何從分組行中增加或減去行值。如果我們有大量的行,並選擇所有正在花費更多的時間。這裏是我的示例代碼http://jsfiddle.net/Srinivasa/PAtSd/2/如何使用JavaScript中的Knockout計算分組行的小計?
回答
您的方法看起來不錯。如果你有性能問題,你必須有大量的行,在這種情況下,你真的想重新考慮用戶界面。也就是說,你可以通過訂閱數量和選擇觀察到並根據一本書的舊值和新值來更改總計。下面的代碼說明了這個想法,但不是一個完整的解決方案。另外,標準的knockoutjs observable沒有lastValue屬性,所以你必須自己實現它(here是你如何去做的一個例子)。
function book(...){
var self = this;
...
self.qty.subscribe(function(newValue){
if(self.selected()){
//grandTotal is regular observable, not a computed one
var grandTotal = rootViewModel.grandTotal();
grandTotal = grandTotal - self.qty.lastValue() + newValue;
rootViewModel(grandTotal);
}
}
}
學生級別的小計,你將需要通過學生的視圖模型作爲參數傳遞給預定的構造:
function book(student, name, qty){
var self = this;
...
self.qty.subscribe(function(newValue){
if(self.selected()){
//student.noOfBooks is regular observable, not a computed one
var noOfBooks = student.noOfBooks();
noOfBooks = noOfBooks - self.qty.lastValue() + newValue;
student.noOfBooks(noOfBooks);
}
}
}
你可能會需要學生構造改變這樣的事情:
function student(name, books /*array of plain object, not view models*/){
var self = this;
self.name = name;
self.noOfBooks = ko.observable()
self.books = ko.utils.arrayMap(books, function(b){
return new book(self, b.name, b.qty);
});
}
感謝羅馬人,這對於根模型來說看起來不錯,可以請你拋出一些想法,我們如何才能做到'學生'級別的小計?在我的實際需求中,我需要處理大約1000行,每行下面有10到20個子行,總計10,000到20,000。所以性能的小改進也有幫助。 – 2012-02-26 07:20:05
我更新了答案以涵蓋學生級別小計。這仍然不是一個完整的解決方案,只是一個想法。 – 2012-02-27 14:19:58
- 1. 使用jquery進行計算和小計分組
- 2. 如何計算JavaScript中的小計和總計?
- 3. 用陣列動態數組計算Knockout
- 4. Knockout中的可重用計算域
- 5. 使用Javascript計算CSV中的行數
- 6. 如何使用javascript計算小時數,分鐘數,秒數
- 7. Knockout JS - 計算值
- 8. 如何使用onblur和javascript計算小計?
- 9. 如何使用組計算行
- 10. 使用Javascript進行計算
- 11. Javascript計算分組後的平均值
- 12. Matlab中的小計計算
- 13. spotfire中的小計計算
- 14. 計算總計使用javascript
- 15. Javascript如何計算數組內的值?
- 16. Javascript計算小計和總計從mysql
- 17. 如何使用分組樣式計算UITableView中單元格的大小?
- 18. 計算數組的大小
- 19. 計算元組的大小
- 20. 計算數組的大小
- 21. Linq - 分組計算總計
- 22. 如何計算使用R的組數?
- 23. 計算Knockout中綁定的總數
- 24. 如何用JavaScript中的虛數計算?
- 25. 如何在C中計算您的計算機的字大小?
- 26. 如何使用JavaScript計算一行中的字符數
- 27. 使用jsfiddle的javascript計算
- 28. 使用javascript計算字母大小
- 29. 如何使用Mongo聚合特性來計算嵌套組的總計和小計百分比?
- 30. 使用類名稱計算類別分部的小計
這是一個很好的問題。我沒有看到一個明顯的方法來改進您目前的工作。也許如果我給它一個比我自己更聰明的+1某人可以看看。 – farina 2012-02-22 22:12:26
我同意這是體面的做法。也許你的具體接口需要重新思考,以減少行數。 – madcapnmckay 2012-02-23 00:21:18