我是Knocout.JS的新手,所以我不知道如何解决我的问题。 假设我想写一个小货币转换器。
<div>
Rate: <input type="text" data-bind="value: Rate" />
</div>
<div>
USD: <input type="text" data-bind="value: Dollar" />
</div>
<div>
EUR: <input type="text" data-bind="value: Euro" />
</div>
我的模特是:
var viewModel = function() {
this.Rate = ko.observable(0);
this.Dollar = ko.observable(0);
this.Euro = ko.computed(function() {
return this.Dollar() * this.Rate();
}, this);
}
ko.applyBindings(new viewModel());
所以我想确保每个文本框的更改事件都更新另一个。 例如,如果美元更新,我也想更新欧元。
这是我的游乐场:http://jsfiddle.net/gnL4we9z/
答案 0 :(得分:5)
您可以制作Euro
computed writable并在Dollar
函数中更新write
媒体资源:
this.Euro = ko.computed({
read: function () {
return this.Dollar() * this.Rate();
},
write: function (value) {
this.Dollar(value / this.Rate());
},
owner: this
});
演示JSFiddle。