簡體   English   中英

$ scope和$ rootscope變量的生命周期

[英]$scope and $rootscope variables' life term

在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,那么可能會出現什么問題? 我只想強調那些附加變量的壽命期限。

  1. $rootScope - 通常在主app.js文件中配置,您可以在其中定義角度主模塊和主要配置。 即使沒有配置,也可以始終注入。
  2. $scope - 當前控制器(頁面)中的當前范圍。

  1. 只要您不刷新頁面, $rootScope變量就會生效。 這意味着它們存在於SPA的所有轉換中。
  2. $scope變量僅存在於當前作用域上(同樣,只要您不刷新頁面),一旦轉換到不同的控制器/頁面,它們就會被處理掉。

$rootScope只要整個頁面都存在

只要使用它的控制器或指令不再處於活動狀態,就會銷毀$ scope實例

瀏覽器中的整頁加載之間沒有javascript持久化

$rootScope是全局的,而$scope是本地的。 當Controller被分配給一個頁面時,因此可以在這里使用$scope變量,因為它綁定到該控制器。 但是當我們想要將其價值分享給其他控制器或服務時,就會使用$rootScope (**有替代方法可以共享值,但在這種情況下我們想要使用$rootScope )。

AngularJS范圍生命周期

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

這意味着當你想要變量時,可以在單個變量中使用多個控制器(整個應用程序),你可以使用 $rootscope

$rootScope存在,但它可以用於邪惡

Angular中的作用域形成一個層次結構,原型繼承自樹頂部的根作用域。 通常這可以忽略,因為大多數視圖都有自己的控制器,因此也有范圍。

有時,您希望為整個應用程序提供全局數據。 對於這些,您可以像任何其他范圍一樣注入$rootScope並在其上設置值。 由於范圍繼承自根范圍,因此這些值可用於附加到ng-show等指令的表達式,就像本地$scope上的值一樣。

當然,全局狀態很糟糕,你應該謹慎使用$rootScope ,就像你希望用任何語言的全局變量一樣。 特別是,不要將它用於代碼,只用於數據。 如果您想在$rootScope上添加一個函數,那么將它放在一個可以在需要的地方注入的服務並且更容易測試幾乎總是更好。

相反,不要創建一個服務,其唯一目的是存儲和返回數據位。

- AngularJS Docs Miscellaneous - 常見問題解答

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM