![](/img/trans.png)
[英]What is the difference between $rootScope vs $rootScope.$emit/$broadcast in AngularJS?
[英]Difference between $rootScope and $rootScope.$root
$ rootScope和$ rootScope之間有什么區別。$ root?
有什么區別
$ rootScope.global.flag = true和$ rootScope。$ root.global.flag = true
他們倆都在rootcope中訪問同一個變量嗎?
如果是這樣,是否有任何特殊情況我們必須使用它們中的任何一個?
Angular中的所有范圍都是相同原型的實例。 因此,全局服務$rootScope
是為指令創建的相同類型的對象,並作為$scope
或控制器傳遞給鏈接函數。
屬性$root
是該原型的一部分,可在所有范圍內使用。
$rootScope
是Angular創建的第一個范圍。 所有范圍都是使用現有范圍中的$new
方法創建的。 所以$rootScope
是一個特例,因為它是在模塊上執行angular.run()
之前創建的。
當您檢查$scope.$root
的值時,它引用$rootScope
的根作用域服務提供的同一實例。
因此;
console.log($rootScope === $scope.$root); // will print true
或者如你的例子;
console.log($rootScope === $rootScope.$root); // will also print true
所以是的,無論你如何引用根范圍,根范圍中的變量都是相同的。
console.log($rootScope.global.flag); // prints true
console.log($scope.$root.global.flag); // prints true
console.log($rootScope.$root.global.flag); // prints true
您還可以顯式訪問模板表達式中的根范圍,如下所示。
<div>{{$root.someValue}}</div>
還有其他屬性,比如$parent
,可以讓你走向范圍鏈,但是對於孤立的范圍, $parent
將為null(因為它沒有父級)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.