下面的Knockout代码使用可观察和计算的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));
这个工作正常,直到我想添加另一个计算的observable来显示
这包括在viewModel代码中注释掉该部分并将这个数据绑定标签添加到标记中:
Exchange Rate: £1 GBP = <label data-bind="text: labelFxRate" />
但是这会导致错误并且标记无法完全呈现
应用第二个计算变量以显示transferItem对象的其他属性的正确方法是什么?
正在进行中的完整版本是jsfiddle:http://jsfiddle.net/WuvZD/3/
答案 0 :(得分:2)
似乎你不能使用自闭标签作为标签。
您在注释掉的代码中也使用了return exchangeRate
但它应该是return item.exchangeRate
?
更新了小提琴:http://jsfiddle.net/WuvZD/4/