【发布时间】:2015-09-08 09:54:47
【问题描述】:
我都看过
$rootScope.$apply();
和
$rootScope.$digest();
在工厂内使用。不过Angular docs 说:
通常,您不会直接在控制器中调用 $digest() 或 指令。相反,您应该调用 $apply() (通常从 指令),这将强制执行 $digest()。
如果你想在 $digest() 被调用时得到通知,你可以 使用 $watch() 注册一个不带监听器的 watchExpression 函数。
在单元测试中,你可能需要调用 $digest() 来模拟作用域 生命周期。
不直接调用$digest 的好处之一是可以避免运行无限循环。
在任何情况下应该使用$digest 而不是$apply(除了测试,如引用中所述)?
【问题讨论】:
标签: javascript angularjs angularjs-scope