gpt4 book ai didi

javascript - KO 计算变量不会更新

转载 作者:行者123 更新时间:2023-11-30 15:32:17 25 4
gpt4 key购买 nike

我有一些正在处理的代码是一个更大的预算应用程序的一部分。该位允许用户输入一些每周重复发生的费用,应用程序将根据输入计算每月总计。除了在编辑现有条目时更新表中的每月金额外,一切正常。删除功能会更新每月每周总支出,添加新条目也一样。

表中的每周金额来自 self.weeklyExpense = new weeklyExpense();。该对象是使用以下外部函数创建的。

function weeklyExpense(data) {
if (!data) {
this.name = ko.observable();
this.weeklyAmount = ko.observable('0.00');
this.monthlyAmount = ko.observable('0.00');
} else {
this.name = ko.observable(data.name);
this.weeklyAmount = ko.observable(data.weeklyAmount);
this.monthlyAmount = ko.computed(function() {
console.log(data.weeklyAmount);
var temp = data.weeklyAmount;
return total = (Number(temp) * 4.4).toFixed(2);
})
}
}

我已将问题缩小到 this.monthlyAmount = ko.computed 变量,它不会在 monthlyAmount 更改时更新。我已在调试器中验证 weeklyAmount 正在更改,但计算变量未更新。任何帮助将不胜感激。

这是一个工作 JS Fiddle 的链接示例。

最佳答案

您引用了错误的属性:data.weeklyAmount 不是可观察的,因此您的计算未更新。

你需要使用的是this.weeklyAmount():

this.monthlyAmount = ko.computed(function() {
var temp = this.weeklyAmount();
return total = (Number(temp) * 4.4).toFixed(2);
}, this);

注意第二个参数this,它使this 指向正确的对象inside your computed (如果您没有像在您的 ViewModel 中那样使用 self 模式)

演示 JSFiddle .

关于javascript - KO 计算变量不会更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42056092/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com