2012-08-31 145 views
1

我有一個KnockoutJS模型包含三個變量:A和B都是可觀察的,C是這樣計算的:return A * B。KnockoutJS區分可觀察和計算

正如你看到的,C是結果A * B.但我希望能也輸入改變C(這使它成爲一個可觀察的,有一個爲C由B.

劃分結果爲了更有意義,A =我們的貨幣數量,B是匯率,C將是計算出的目標數量,但有時用戶不知道我們貨幣的數量,但知道目的地的數量。我們的貨幣需要比計算,而不是一個可觀察的,我希望用戶有靈活性來計算一個或另一個。

回答

1

你可以使用讀/寫計算來實現這一點,下面是例子:

視圖模型:

function ViewModel() { 
    var self = this; 
    self.amount = ko.observable(); 
    self.rate = ko.observable(); 
    self.result = ko.computed({ 
     read: function() { 
      if (self.amount() && self.rate()) 
       return self.amount() * self.rate(); 
     }, 
     write: function(value) { 
      if (self.rate()) { 
       self.amount(value/self.rate()); 
      } 
     } 
    }); 
} 

var viewModel = new ViewModel(); 
ko.applyBindings(viewModel); 

查看:

<input data-bind="value: amount" /> 
<input data-bind="value: rate" /> 
<input data-bind="value: result" /> 

Fiddle