我正在编写一个控制器,它对给定控制器属性更改的更新作出反应。我正在为它编写测试,但我意识到在更新模型的代码之前调用了$ watch回调。
此外,在过早的$ watch回调调用和更新模型的代码之后,$ watch回调不再被调用。
在我看来,在控件实例化期间调用$ watch回调并且没有配置表达式observer等。
你们有什么想法?
答案 0 :(得分:2)
嗯,scope.$watch
应该这样做,马上开火。这是最初的更新。它进行初始射击然后任何后续射击只发生真正的变化。您可以检测newValue === oldValue
的初始运行,其中这些是您的手表回调的第一个和第二个参数。
至于为什么不再调用它,你是否在正常的Angular上下文之外更改范围属性?如果是这样,您需要scope.$apply
。