我在控制器中看到$ scope有$ root,這是什麼?它與$ rootScope可以注入控制器有何不同?
回答
$rootScope
var指向所有作用域的父項,並且可以隨處注入。所有其他範圍都是$rootScope
的子女。它們通過$rootScope
的$new
方法創建,因此每個範圍都從$rootScope
繼承。
在Scope
構造there is a line的定義的角源:
function Scope() {
this.$id = nextUid();
...
this['this'] = this.$root = this;
...
看來$root
變種是隻爲創建的第一個範圍的this
的佔位符 - $rootScope
。
接下來是在$new
方法this piece of code:
$new: function(isolate) {
...
if (isolate) {
child = new Scope();
child.$root = this.$root;
...
return child;
所以$root
變種$rootScope
每範圍的孩子是$rootScope
參考。而這些孩子的所有的孩子將得到相同的參考$rootScope
在我看來,這是更好地通過依賴注入使用$rootScope
因爲它是一個明確的,指的是$rootScope
謝謝:)它肯定會幫助 –
很好的解釋。我認爲$ scope。$ root是存在的,可以方便地訪問模板中的$ rootScope變量,而不需要將$ rootScope包含到控制器中。 – canerbalci
@canerbalci在角1.4中,根作用域被允許銷燬,使用它$ root root將在根作用域被銷燬後指向空 – Jack
如前所述,$scope.$root
保留對$rootScope
的引用。
不幸的是,使用$scope.$root
和使用$rootScope
之間的差:
- 當
$scope
是根,其$root
屬性是null
$scope.$root
僅被分配於分離物的範圍: https://github.com/angular/angular.js/blob/v1.3.6/src/ng/rootScope.js#L204
所以你可能有一個情況,其中$scope.$root
是null
。 更好地使用$rootScope
改爲...
- 1. $ root和$ parent之間有什麼區別?
- 2. Flash Scope和Request Scope之間的區別
- 3. 在IdentityServer3中,Client Secrets和Scope Secrets之間有什麼區別?
- 4. $ document.ready和$ rootScope $ on('$ viewContentLoaded')有什麼區別?
- 5. CSS3:root僞類和html之間有什麼區別?
- 6. AngularJS在$ rootScope和$ scope之間選擇
- 7. $ rootScope。$ new()和$ rootScope。$ new(true)有什麼區別?
- 8. $ scope.myFunction()和myFunction($ scope)之間的區別
- 9. $ scope與$ watch之間是否有區別?
- 10. 「層」和「層」之間有什麼區別?
- 11. Tableau和QlikView之間有什麼區別
- 12. Microsoft.CompilerServices.AsyncTargetingPack和Microsoft.Bcl.Async之間有什麼區別?
- 13. @Entity和@embeddable之間有什麼區別
- 14. ContentObservable和DataSetObservable之間有什麼區別?
- 15. touchmove和gesturechange之間有什麼區別?
- 16. :notification.flags和notification.defaults之間有什麼區別?
- 17. proc和lambda之間有什麼區別?
- 18. :: after和after之間有什麼區別?
- 19. read()和io.read()之間有什麼區別?
- 20. Request()和Request.Form()之間有什麼區別?
- 21. WebServiceBinding.EmitConformanceClaims和WebServiceBinding.ConformanceClaims之間有什麼區別?
- 22. getA()和this.getA()之間有什麼區別?
- 23. (int)和intval()之間有什麼區別?
- 24. set_value和= pandas之間有什麼區別
- 25. * zoom和zoom之間有什麼區別?
- 26. {0}和「」之間有什麼區別?
- 27. typedef和using之間有什麼區別?
- 28. 「」和「'之間有什麼區別?
- 29. STDIN和tty之間有什麼區別?
- 30. +和%之間有什麼區別?
我從來沒有來過'$ scope。$ root'。它可以是'$ scope'上定義的任何用戶定義的屬性。 – AlwaysALearner
禁止其用戶定義。你可以在任何控制器的$範圍內找到它 –
而用戶定義的屬性不應該以'$' –