Knockout.js 淘汰订阅:当订阅的可观察对象被清除时,如何避免订阅中的两个调用?

Knockout.js 淘汰订阅:当订阅的可观察对象被清除时,如何避免订阅中的两个调用?,knockout.js,subscribe,Knockout.js,Subscribe,我想弄清楚如何通过订阅以更干净的方式避免递归 在下一篇文章中,我们将展示如何调用订阅2次(对于observeOne),这是因为我需要初始状态下的observeable(即监视订阅) 可以用“if”条件(observateTwo)来避免,但我想知道是否有函数可以代替“if”条件来完成这项任务。我尝试使用cleanNode,但不起作用 这是小提琴: 我不想取消订阅observable,因为它应该在通话后监听。问题的一部分是,如果您设置了设置,它似乎不会触发数据绑定,因此复选框可能会处于错误状态 要

我想弄清楚如何通过订阅以更干净的方式避免递归

在下一篇文章中,我们将展示如何调用订阅2次(对于observeOne),这是因为我需要初始状态下的observeable(即监视订阅)

可以用“if”条件(observateTwo)来避免,但我想知道是否有函数可以代替“if”条件来完成这项任务。我尝试使用cleanNode,但不起作用

这是小提琴:


我不想取消订阅observable,因为它应该在通话后监听。

问题的一部分是,如果您设置了设置,它似乎不会触发数据绑定,因此复选框可能会处于错误状态

要解决这个问题。。。而不是设置为ObservableTo,将其设置为超时

setTimeout(function(){ self.observableTwo(''); },0);

关于如何抑制递归通知,我看不到任何“官方”方式。因此,您的操作方式,或者您可能使用标志的其他变体,或者您可能会想出一个通用包装函数来为您排序。

问题的一部分是,如果您设置了设置,它似乎不会触发数据绑定,因此复选框可能最终处于错误状态

要解决这个问题。。。而不是设置为ObservableTo,将其设置为超时

setTimeout(function(){ self.observableTwo(''); },0);

关于如何抑制递归通知,我看不到任何“官方”方式。因此,您的操作方式,或者您可能使用标志的其他变体,或者您可能会想出一个通用包装函数来为您排序。

Fiddle是一种显示行为的简单方式,但您的修复是正确的!关于没有人支持这种行为,恐怕你也是对的。希望在未来,ko可以提供更清洁的方式。谢谢你,我真的很欣赏你的观点,基思!小提琴是一个简单的方式来显示行为,但你的修复是正确的!关于没有人支持这种行为,恐怕你也是对的。希望在未来,ko可以提供更清洁的方式。谢谢你,我真的很欣赏你的观点,基思!