【问题标题】:knockout subscribe to observables needed?淘汰订阅需要的观察?
【发布时间】:2011-09-17 21:54:27
【问题描述】:

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

【问题讨论】:

  • 其他字段是否更新为相同的值?

标签: javascript knockout.js


【解决方案1】:

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

不过,以前,避免循环更新的最佳方法是在 observable 确实需要更新时检查您的订阅。这将切断更新链。

所以:

myViewModel.one.subscribe(function(newValue) {

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

否则,如果您的方案有更多内容,那么可能还有其他可写的dependentObservables 选项可供探索。但是,当您获得的关系不止双向时,手动订阅通常是最好的选择。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-24
    • 2019-03-27
    • 2015-08-29
    • 2021-11-04
    • 2014-04-12
    • 2013-11-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多