淘汰订阅所需的观察?

时间:2011-06-18 19:39:48

标签: javascript knockout.js

我有一个包含四个输入字段的表单。当从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情况......

1 个答案:

答案 0 :(得分:3)

在Knockout 1.2.1中,如果使用完全相同的值更新observable,则不会发送更新。因此,在这种情况下,如果每个值都使用相同的值更新,那么您应该没问题。

之前,避免递归循环更新的最佳方法是检查您的订阅是否真的需要更新observable。这将削减更新链。

所以:

myViewModel.one.subscribe(function(newValue) {

    if (two() !== "the right value") {
       two("the right value");
    }
    //etc...
}); 

否则,如果你的场景还有更多,那么可能还有其他可以探索的可写dependentObservable选项。当你获得的不仅仅是双向关系时,手动订阅通常是最好的选择。

相关问题