我想实现一个功能,根据其他两个字段的值自动填充字段,但允许用户覆盖计算的建议值。例如:
输入1:_________
输入2:_________
输入3:默认输入1 /输入2
我希望每当输入1或2更改时更新输入3,但如果用户明确更改了其值,我不想更改输入3。现在,如何通知用户输入(或拖动或粘贴)导致输入3已更改,而不是由于输入1和2更改时代码更新后的输入?
答案 0 :(得分:4)
解决方案是使用writable computed observables
HTML:
Value 1: <input type="number" data-bind='value: value1' />
<br/>
Value 2: <input type="number" data-bind='value: value2' />
<br/>
Value 3: <input type="number" data-bind='value: value3Computed' />
<br/>
JavaScript的:
function MyViewModel() {
this.value1 = ko.observable(1);
this.value2 = ko.observable(2);
this.value3 = ko.observable(null);
this.value3Computed = ko.computed({
read: function () {
return this.value3() || this.value1() / this.value2();
},
write: function (value) {
this.value3(value);
},
owner: this
});
}
var vm = new MyViewModel();
ko.applyBindings(vm);