AngularJS服务rootscope

Ivo*_*Ivo 2 javascript angularjs

我有一个在AngularJS中定义的服务,app.factory("serviceName", function($rootScope) { .. }) 如果我这样做$rootScope.$apply(),是否会重新评估应用程序中所有控制器的作用域或仅使用此服务的控制器的作用域?

Mar*_*cok 5

$ digest()仅"刷新"当前作用域及其所有子作用域.

$ apply(exp)计算exp,然后在根作用域上调用$ digest().所以调用$ apply()(在任何范围内)都会影响所有范围.

如果您调用$ digest()并且您的操作更改了某个父范围,则不会观察到更改.所以通常你想调用$ apply().(如果你想通过调用$ digest()来尝试提高效率,那么它可以在以后咬你!)