U r*_*u s 1 javascript angularjs angularjs-scope
我见过两者
$rootScope.$apply();
和
$rootScope.$digest();
在工厂内使用.但是Angular的文档说:
通常,您不直接在控制器或指令中调用$ digest().相反,你应该调用$ apply()(通常来自一个指令),这将强制$ digest().
如果您希望在调用$ digest()时收到通知,则可以使用$ watch()注册watchExpression函数而不使用侦听器.
在单元测试中,您可能需要调用$ digest()来模拟范围生命周期.
不$digest直接调用的优点之一是避免运行无限循环.
是否有其中一个应该使用任何情况下,$digest在$apply(除了测试,在报价提到的)?
当您的应用程序变得足够大以至于摘要变得非常昂贵时,您可以在范围内调用摘要,确保不会对应用程序的其他部分造成副作用.
例如,您可能已经引入了一个jQuery日历插件,您通常会调用$ apply on来观察其与范围的绑定.此日历可能用于反馈表单,因此它可以独立于您的应用程序的其余部分,这可能是一个拥有数千名观察者的大型实时数据源.
日历上的scope.apply将遍历整个应用程序,并在没有必要的情况下对所有数千名观察者进行脏检查以获取实时Feed.在这种情况下,您应该调用$ scope.$ digest(),因为您只知道日历模型已更改.
| 归档时间: |
|
| 查看次数: |
1243 次 |
| 最近记录: |