Javascript KO计算变量将不会更新
我有一点代码,我正在工作,这是一个更大的预算应用程序的一部分。此位允许用户输入一些重复发生的每周费用,应用程序将根据输入计算每月总额。除了在编辑现有条目时更新表中的每月金额外,所有操作都正常。“删除”功能可以更新每月和每周的总费用,添加新条目也可以执行相同的操作 表中的每周金额来自Javascript KO计算变量将不会更新,javascript,html,knockout.js,Javascript,Html,Knockout.js,我有一点代码,我正在工作,这是一个更大的预算应用程序的一部分。此位允许用户输入一些重复发生的每周费用,应用程序将根据输入计算每月总额。除了在编辑现有条目时更新表中的每月金额外,所有操作都正常。“删除”功能可以更新每月和每周的总费用,添加新条目也可以执行相同的操作 表中的每周金额来自self.weeklyExpense=new weeklyExpense()。此对象是使用以下外部函数创建的 function weeklyExpense(data) { if (!data) {
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
正在更改,但计算变量没有更新。任何帮助都将不胜感激
这里是指向工作示例的链接。您引用了错误的属性:数据。weeklyAmount
不可观察,因此您的计算结果不会更新
您需要使用的是this.weeklyAmount()
:
请注意第二个参数this
,它使this
指向正确的对象(如果您没有使用视图模型中的self
模式)
演示
this.monthlyAmount = ko.computed(function() {
var temp = this.weeklyAmount();
return total = (Number(temp) * 4.4).toFixed(2);
}, this);