何时在Angularjs上使用$ rootScope?

时间:2016-02-28 23:52:14

标签: angularjs

如果在控制器之间共享数据的正确方法是使用工厂/服务,$ rootScope的目的是什么?

2 个答案:

答案 0 :(得分:8)

$rootScope存在,但它可以用于邪恶

Angular中的范围形成层次结构,原型继承自树顶部的根范围。通常这可以忽略,因为大多数视图都有自己的控制器,因此也有范围。

有时,您希望为整个应用程序提供全局数据。对于这些,您可以注入$rootScope并在其上设置值,就像任何其他范围一样。由于范围继承自根范围,因此这些值可用于附加到ng-show等指令的表达式,就像本地$scope上的值一样。

当然,全球状态很糟糕,你应该谨慎地使用$rootScope ,就像你希望用任何语言的全局变量一样。特别是,不要将它用于代码,只用于数据。如果您想在$rootScope上添加一个函数,那么将它放在一个可以在需要的地方注入的服务并且更容易测试时,几乎总是更好。

相反,不要创建一个服务,其唯一目的就是存储和返回数据位。

- AngularJS FAQ

答案 1 :(得分:4)

根据我的理解。 你可以在多个地方使用$ rootScope。

  • 在工厂中定义的全局设置,然后在视图中您可以根据您的条件进行更新。 f.x布局操作
  • 您可以在运行中分配$ state。
  • 你可以处理错误($ rootScope。$ on(...)

我希望这会有所帮助。

由于