2012-07-03 84 views
1

我在试图弄清楚如何避免以更清晰的方式递归订阅。Knockout订阅:如何在订阅的observable被清除时避免订阅中的两个调用?

在接下来的小提琴表现出2倍的认购如何调用(用于observableOne),这happends因为我需要可观测(即监控订阅)在初始状态。

它可以用一个“如果”条件(observableTwo)来避免,但如果有一些功能做这个任务,而不是“如果”条件我不知道。我用cleanNode尝试过,但不起作用。

这是小提琴: http://jsfiddle.net/wabe/nLYyf/

我不想退订可观察的,因为它应该调用之后被监听。问题的

回答

1

一个组成部分,如果你设置的设置,它似乎并没有触发数据绑定这样的复选框可以在错误状态结束。

解决这个问题......而不是设置observableTwo,把它放在一个超时...

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

对于如何抑制递归通知,我没有看到任何“官方”的方式。所以你这样做,或者你可能会使用一个标志的其他变体,或者可能想出一个通用的包装函数来为你排序。

+0

小提琴是一种简单的方式来显示行为,但你是正确的修复!关于对这种行为的支持的不存在,我担心你也是对的。希望将来可以使用更简洁的方式与ko一起使用。谢谢,我真的很欣赏你的观点Keith! –