Knockout.js KnockoutJs computed不使用上次计算的字段
我有字段Knockout.js KnockoutJs computed不使用上次计算的字段,knockout.js,Knockout.js,我有字段A=A1+A2 字段B=B1+B2 字段C=A+B 当我改变A1、A2、B1、B2时 A、 B,C工作正常 我尝试手动更改值字段A或字段B,然后希望字段C=A+B,但没有:(.为什么?如何修复? 请帮帮我!非常感谢 这是我的问题: 您的变量可以是可观察的(“”)或ko.computed。但不能两者都是。当您更改A或B时,它没有被观察到。因此,C的值没有变化。当您更改A1、A2、B1、B2时,它正在更改A、B和C的值。这是一种预期行为。这里是jsfidle,请注意subscribe函数,它
A=A1+A2
字段B=B1+B2
字段C=A+B
当我改变A1、A2、B1、B2时
A、 B,C工作正常
我尝试手动更改值字段A或字段B,然后希望字段C=A+B
,但没有:(.为什么?如何修复?
请帮帮我!非常感谢
这是我的问题:
您的变量可以是可观察的(“”)或ko.computed。但不能两者都是。当您更改A或B时,它没有被观察到。因此,C的值没有变化。当您更改A1、A2、B1、B2时,它正在更改A、B和C的值。这是一种预期行为。这里是jsfidle,请注意subscribe函数,它检测可观察到的任何变化,并进行操作例如,newval是您输入的新值,正如另一位pal所说,您不能同时进行可观察和计算。当a1、a2中发生更改时,A将更新,当A和B中发生更改时,C将更新,我还建议您使用self为所有变量命名。 投票给我作为被接受的答案:)
我将所有更改为ko.observable(“”)。我如何观察A或B?
var ViewModel = function () {
self = this;
self.A1 = ko.observable(0);
self.B1 = ko.observable(0);
self.A2 = ko.observable(0);
self.B2 = ko.observable(0);
self.A = ko.observable(0);
self.B = ko.observable(0);
self.C = ko.observable(0);
self.A1.subscribe(function(newval){
self.A(parseFloat(newval) + parseFloat(self.A2()))
});
self.A2.subscribe(function(newval){
self.A(parseFloat(self.A1()) + parseFloat(newval));
});
self.B1.subscribe(function(newval){
self.B(parseFloat(newval) + parseFloat(self.B2()))
});
self.B2.subscribe(function(newval){
self.B(parseFloat(self.B1()) + parseFloat(newval));
});
self.A.subscribe(function(newval){
self.C(parseFloat(newval) + parseFloat(self.B()))
});
self.B.subscribe(function(newval){
self.C(parseFloat(self.A()) + parseFloat(newval));
});
};
ko.applyBindings(new ViewModel());