我有一个包含四个输入字段的表单。当从UI更新res(3)时,我需要更新res(3)。这意味着更新的那个可以是四个中的任何一个。
myViewModel.four.subscribe(function(newValue) {
//update one here
//update two here
//update three here
});
依旧.....
myViewModel.one.subscribe(function(newValue) {
//update two here
//update three here
//update four here
});
但我应该如何更新方法内的?对我而言,它看起来像Stack Overflow情况......
答案 0 :(得分:3)
在Knockout 1.2.1中,如果使用完全相同的值更新observable,则不会发送更新。因此,在这种情况下,如果每个值都使用相同的值更新,那么您应该没问题。
之前,避免递归循环更新的最佳方法是检查您的订阅是否真的需要更新observable。这将削减更新链。
所以:
myViewModel.one.subscribe(function(newValue) {
if (two() !== "the right value") {
two("the right value");
}
//etc...
});
否则,如果你的场景还有更多,那么可能还有其他可以探索的可写dependentObservable选项。当你获得的不仅仅是双向关系时,手动订阅通常是最好的选择。