我有一个包含四个输入字段的表单。当从 UI 更新一个时,我需要更新 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 的情况……
最佳答案
在 Knockout 1.2.1 中,如果使用完全相同的值更新可观察对象,则不会发送更新。因此,在那种情况下,如果每个值都更新为相同的值,您应该没问题。
虽然以前,避免递归更新循环的最佳方法是检查您的订阅是否确实需要更新可观察对象。这将切断更新链。
所以:
myViewModel.one.subscribe(function(newValue) {
if (two() !== "the right value") {
two("the right value");
}
//etc...
});
否则,如果您的场景还有更多内容,那么可能还有其他可以探索的具有可写 dependentObservables 的选项。但是,当您获得的不仅仅是双向关系时,手动订阅通常是最好的选择。
关于javascript - knockout 订阅需要观察?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6398443/