$ scope和$ rootscope变量'生命期限

时间:2017-04-09 09:28:25

标签: javascript angularjs

在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,那么可能会出现什么问题? 我只想强调那些附加变量的生命周期。

3 个答案:

答案 0 :(得分:3)

  1. $rootScope - 通常在主app.js文件中配置,您可以在其中定义角度主模块和主要配置。即使未配置,也可以始终注入。
  2. $scope - 当前控制器(页面)中的当前范围。
    1. 只要您不刷新页面,
    2. $rootScope个变量就会存在。这意味着它们存在于SPA的所有转换中。
    3. $scope变量仅存在于当前范围内(同样,只要您不刷新页面),一旦转换到不同的控制器/页面,它们就会被处理掉。

答案 1 :(得分:2)

只要整个页面

$rootScope就会存在 只要使用它的控制器或指令不再有效,就会销毁$ scope实例

浏览器中的整页加载之间没有javascript持久

答案 2 :(得分:2)

$rootScope是全球性的,而$scope是本地的。将Controller分配给页面时,可以在此处使用$scope变量,因为它绑定到此控制器。但是当我们想要将其价值分享给其他控制器或服务时,正在使用$rootScope(**有替代方法可以共享值,但在这种情况下,我们希望使用$rootScope)。< / p>

AngularJS Scope Life-Cycle

分配有$scope的属性不能在定义它的控制器之外使用,而分配有$rootScope的属性可以在任何地方使用。

这意味着当你想要变量时可以在单个变量中使用多个控制器(整个应用程序),你可以使用 $rootscope

  

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

     

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

     

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

     

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

     

相反,请勿创建仅用于其中的服务   生活就是存储和返回数据。

     

— AngularJS Docs Miscellaneous - FAQ

相关问题