$ watch回调正在表达式求值之前执行而不再执行

时间:2012-12-17 21:29:58

标签: javascript angularjs

我正在编写一个控制器,它对给定控制器属性更改的更新作出反应。我正在为它编写测试,但我意识到在更新模型的代码之前调用了$ watch回调。

此外,在过早的$ watch回调调用和更新模型的代码之后,$ watch回调不再被调用。

在我看来,在控件实例化期间调用$ watch回调并且没有配置表达式observer等。

你们有什么想法?

1 个答案:

答案 0 :(得分:2)

嗯,scope.$watch应该这样做,马上开火。这是最初的更新。它进行初始射击然后任何后续射击只发生真正的变化。您可以检测newValue === oldValue的初始运行,其中这些是您的手表回调的第一个和第二个参数。

至于为什么不再调用它,你是否在正常的Angular上下文之外更改范围属性?如果是这样,您需要scope.$apply