【发布时间】:2016-03-13 03:22:53
【问题描述】:
我正处于学习淘汰赛的迷雾中,并且卡在某些功能上
我有一个 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);
});
【问题讨论】:
-
为什么你需要一个额外的 observable 来存储 total ?直接返回总数并绑定
getTotals查看。来到您的更新部分,它应该会顺利进行。与您的问题有关的样本会有所帮助。仅供参考item.productPrice()不需要unwrapObservable就可以像这样简单地展开 `total += parseFloat(item.productPrice());` 干杯 -
谢谢你是对的 productPrice 坚持单价而不是计算价格,感谢 unwrapObservable 指针,让事情变得更简单。