$apply
函数可以在任何作用域上运行,包括 $rootScope
。
在某些情况下,如果我在本地作用域上运行它,或者在我的 $rootScope
上运行它,会有什么不同吗?
我这么问是因为我想创建一个辅助函数,将给定函数包装在 $apply
中。为此,我总是需要传递一个作用域,这 A) 很烦人,B) 不容易,因为我不一定有本地作用域。
我希望始终让我的辅助函数在 $rootScope
上调用 $apply
,但如果这样做存在风险,则不这样做。
最佳答案
在任何作用域上运行 $apply
始终会生成 $rootscope.$digest
。唯一可能产生影响的情况是当您提供表达式作为 $apply
的参数时。该表达式将在当前作用域(相对于 $rootScope)进行计算,但之后$rootscope.$digest
总是被调用。
源码很清晰:rootScope.js
底线:
如果您不带参数调用 $apply
,则没有区别。
关于angularjs - 在 $rootScope 上运行 $apply 与任何其他范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17868889/