我在表单上有两个字段;“天数”和“日期”。
<div id="myForm">
<label for="days">Days</label>
<input id="days" type="text" data-bind="value:myViewModel.days" />
<label for="date">Date</label>
<input id="date" type="text" data-bind="value:myViewModel.date" />
</div>
每个字段都绑定到一个KO可观察对象。我希望用户能够编辑这些字段中的任何一个,而另一个字段将自动更新。
My ViewModel如下所示(简化以保持简洁):
myViewModel = new function () {
var self = this;
self.days = ko.observable(10);
self.date = ko.observable('2020-02-06');
};
myViewModel.days.subscribe(function (newValue) {
var newDate = JSON call to get new date using newValue
myViewModel.date(newDate);
});
myViewModel.date.subscribe(function (newValue) {
var newDays = JSON call to get days using newValue
myViewModel.days(newDays);
});
我遇到的问题是因为两个值都是可观察的,并且每个值都会更新另一个值,一旦其中一个值被自动更新,它就会触发另一个更新循环。有没有其他方法来获得我想要的行为?
提前感谢。
1条答案
按热度按时间gg0vcinb1#
一种方法是将UI绑定到可写的计算对象,而不是直接绑定到可观察对象。UI更新被发送到计算对象,而计算对象指示哪些底层的可观察对象被更新,而不触发任何进一步的(模型)更新。
第一个