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());