我想计算所选行的分组行的子总数,我能够计算,但通过循环所有元素,每次更改总计算。任何人都可以建议如何从分组行中增加或减去行值。如果我们有大量的行,并选择所有正在花费更多的时间。这里是我的示例代码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