在angularjs中,我看到了很多用于$ scope和$ rootscope的用法。 我想了解附加到$ scope和$ rootscope的变量的生命周期。 说,我有a.js / a.html和e.js / e.html。
a.js附带$ scope,变量如$ scope.b,$ scope.c,$ scope.d在a.html中使用。 如果我用e.js和e.html加载另一个页面。那些$ scope.b,$ scope.c,$ scope.d仍有生命或被删除。如果我在e.js中再次使用$ scope.b,$ scope.c,$ scope.d,那么可能会出现什么问题? 我只想强调那些附加变量的生命周期。
答案 0 :(得分:3)
$rootScope
- 通常在主app.js文件中配置,您可以在其中定义角度主模块和主要配置。即使未配置,也可以始终注入。$scope
- 当前控制器(页面)中的当前范围。$rootScope
个变量就会存在。这意味着它们存在于SPA的所有转换中。$scope
变量仅存在于当前范围内(同样,只要您不刷新页面),一旦转换到不同的控制器/页面,它们就会被处理掉。答案 1 :(得分:2)
$rootScope
就会存在
只要使用它的控制器或指令不再有效,就会销毁$ scope实例
浏览器中的整页加载之间没有javascript持久
答案 2 :(得分:2)
$rootScope
是全球性的,而$scope
是本地的。将Controller分配给页面时,可以在此处使用$scope
变量,因为它绑定到此控制器。但是当我们想要将其价值分享给其他控制器或服务时,正在使用$rootScope
(**有替代方法可以共享值,但在这种情况下,我们希望使用$rootScope
)。< / p>
分配有$scope
的属性不能在定义它的控制器之外使用,而分配有$rootScope
的属性可以在任何地方使用。
这意味着当你想要变量时可以在单个变量中使用多个控制器(整个应用程序),你可以使用 $rootscope
$rootScope
存在,但它可以用于邪恶Angular中的范围 形成一个层次结构,原型继承自顶部的根范围 这棵树通常这可以忽略,因为大多数视图都有 控制器,因此也是他们自己的范围。
偶尔 有一些数据要使整个数据全局化 应用程序。对于这些,您可以注入
$rootScope
并在其上设置值 任何其他范围。由于范围继承自根范围,因此 值将可用于附加到指令的表达式 与ng-show
一样,就像您在本地$scope
上的值一样。当然, 全球状态很糟糕,你应该像你一样谨慎使用
$rootScope
会(希望)使用任何语言的全局变量。在 特别是,不要将它用于代码,只用于数据。如果你很想放 在$rootScope
上的一个函数,将它放入一个函数几乎总是更好 可以在需要的地方注入,更容易注入的服务 测试。相反,请勿创建仅用于其中的服务 生活就是存储和返回数据。