如果在 Controller 之间共享数据的正确方法是使用工厂/服务,则$ rootScope的用途是什么?
最佳答案
$rootScope
存在,但可用于作恶
Angular 中的作用域形成一个层次结构,原型(prototype)上继承自树顶部的根作用域。通常这可以忽略,因为大多数 View 都有自己的 Controller ,因此也有自己的作用域。
有时,您希望将一些数据全局化到整个应用程序。对于这些,您可以像任何其他范围一样注入(inject) $rootScope
并在其上设置值。由于作用域继承自根作用域,因此这些值将可用于附加到 ng-show
等指令的表达式,就像本地 $scope
上的值一样。
当然,全局状态很糟糕, 您应该谨慎使用 $rootScope
,就像您(希望)在任何语言中使用全局变量一样。特别是,不要将它用于代码,仅用于数据。如果您想将一个函数放在 $rootScope
上,那么将它放在一个可以注入(inject)到需要的地方并且更容易测试的服务中几乎总是更好。
相反,不要创建其唯一目的是存储和返回数据位的服务。
-- AngularJS FAQ
关于angularjs - 何时在 Angularjs 上使用 $rootScope?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35689853/