我正处于学习淘汰赛的迷雾之中,并坚持使用某些功能
我有一个observable可以从Observable数组中的值计算总数。不幸的是它只是在推送或删除时更新,但我希望它也在更新时更新,当我更新数组中某个对象的属性时,是否有某种方法可以手动触发更新?
self.basketTotal = ko.observable();
self.basketItems = ko.observableArray([]);
self.getTotals = ko.computed(function(){
var total = 0;
ko.utils.arrayForEach(self.basketItems(), function(item) {
total += parseFloat(ko.utils.unwrapObservable( parseInt( item.productPrice() )) );
});
self.basketTotal(total);
});
答案 0 :(得分:1)
@super cool对初始帖子的评论是正确答案
"为什么你需要一个额外的observable来存储总数?直接返回总数&绑定getTotals进行查看。来到你的更新部分它应该顺利。您的问题样本会有所帮助。 FYI item.productPrice()执行unwrap不需要unwrapObservable保持简单,就像这个`total + = parseFloat(item.productPrice());"
var total = 0;
ko.utils.arrayForEach(self.basketItems(), function(item) {
total += parseFloat( parseInt( item.productQtyPrice() ) );
});
self.basketTotal(total);
要回答关于额外可观察量的问题,我会用它来计算各种各样的东西,比如折扣和税收等等,所以从示例代码中排除了几个步骤,以便稍微解决问题更清楚的是,手头的问题只是错误的计算(技术上它是工作代码)和超级冷却评论有助于指出这一点。