簡體   English   中英

$ rootScope和$ rootScope。$ root之間的區別

[英]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.

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