工作,我有場A = A1 + A2
KnockoutJs不計算與去年計算字段
場B = B1 + B2
場C= A + B
當我改變A1, A2, B1, B2
A,B,C正常工作。
我試圖手動更改值場A或場B,則希望場C = A + B
但不:(爲什麼,以及如何解決 請幫我謝謝你這麼多
這裏這是我的問題。?!: http://jsfiddle.net/leoitviet/X8v6h/5/
工作,我有場A = A1 + A2
KnockoutJs不計算與去年計算字段
場B = B1 + B2
場C= A + B
當我改變A1, A2, B1, B2
A,B,C正常工作。
我試圖手動更改值場A或場B,則希望場C = A + B
但不:(爲什麼,以及如何解決 請幫我謝謝你這麼多
這裏這是我的問題。?!: http://jsfiddle.net/leoitviet/X8v6h/5/
這裏是jsfidle,請注意訂閱函數,它檢測observable中的任何更改並進行操作,newval是您輸入的新值,因爲另一個朋友說你不能同時執行可觀察和計算。當更改a1,a2時發生A更新,當A和B發生更改時C更新,同時我建議您使用self來命名所有變量。 投票我爲acepted答案:)
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());
你的變量可以是ko.observable(「」)或ko.computed,但不能同時當你正在改變A或B,沒有被觀測到它。因此,沒有在C值變化。當你改變A1,A2,B1,B2時,它正在改變A,B和C的值。這是一個預期的行爲。
我改變了所有ko.observable( 「」)。我如何觀察A或B? – user3101354
非常感謝你!祝你有美好的一天! – user3101354
不要忘記投我作爲接受的答案美好的一天 – Geomorillo