2014-01-09 48 views
1

下面的挖掘代碼應用了使用observable和computed observable跟蹤兩個文本框的值。第二個計算函數導致挖掘代碼中的錯誤

標記:

GBP: 
<input type="textbox" data-bind="value: sendGbp" /> 
<br /> 
Exchange Rate: £1 GBP 
<br /> 
<input type="textbox" data-bind="value: sendFx" /> 

的Javascript:

var transferItem = { 
    receiveCurrencyCode : "JPY", 
    exchangeRate : 123.223122 
} 

function viewModel(item) { 

    var self = this; 

    var initval = parseFloat(100).toFixed(2); 
    self.sendGbp = ko.observable(initval); 

    /** commented out error source 
    self.labelFxRate = ko.computed(function() { 
     return exchangeRate + " " + item.receiveCurrencyCode; 
    });  
    **/ 

    self.sendFx = ko.computed({ 
     read: function() { 
      return parseFloat(self.sendGbp() * item.exchangeRate).toFixed(2); 
     }, 
     write: function (val) { 
      var valGbp = parseFloat(val); 
      self.sendGbp((valGbp/item.exchangeRate).toFixed(2)); 
     } 
    }); 
} 
ko.applyBindings(new viewModel(transferItem)); 

,直到我要添加另一個計算的可觀測顯示

這涉及到能正常工作,要註釋掉視圖模型節代碼並將此數據綁定標籤添加到標記中:

Exchange Rate: £1 GBP = <label data-bind="text: labelFxRate" /> 

但是,這會導致錯誤和標記無法呈現完全

什麼是應用第二計算變量,顯示從transferItem對象附加屬性的正確方法是什麼?

正在進行版本的全面工作,是的jsfiddle:http://jsfiddle.net/WuvZD/3/

回答

2

好像你不能使用自動關閉的標籤爲標籤。 也在您註釋掉的代碼中使用了return exchangeRate,但它應該是return item.exchangeRate

更新小提琴:http://jsfiddle.net/WuvZD/4/

+0

回報EXCHANGERATE是,當我打得周圍的jsfiddle一個錯字。但是,是的 - 這是自動關閉標籤,這是錯誤!謝謝! – woodfly