2013-12-14 94 views

回答

1

這裏是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()); 

http://jsfiddle.net/geomorillo/X8v6h/8/

+0

非常感謝你!祝你有美好的一天! – user3101354

+0

不要忘記投我作爲接受的答案美好的一天 – Geomorillo

1

你的變量可以是ko.observable(「」)或ko.computed,但不能同時當你正在改變A或B,沒有被觀測到它。因此,沒有在C值變化。當你改變A1,A2,B1,B2時,它正在改變A,B和C的值。這是一個預期的行爲。

+0

我改變了所有ko.observable( 「」)。我如何觀察A或B? – user3101354