我在AngularJS的範圍繼承閱讀this article,並通過這個代碼示例困惑:爲什麼會導致繼承?
angular.module("Demo", [])
.controller("ChildCtrl", function($rootScope, $scope) {
$rootScope.rootyThing = "I am groot";
console.log($scope.rootyThing); // "I am groot"
console.log(Object.getPrototypeOf($scope)); // Scope
});
我不明白爲什麼$scope.rootyThing
設置,而不是undefined
。
該文章的解釋看起來不完整。從$rootScope
的子範圍「原型繼承」的事實不能解釋這一點,因爲rootyThing
沒有設置在原型上,而且在創建子範圍$scope
後設置。
唯一的解釋是如果Angular中的作用域被深度修改,使得它們上設置的所有變量都被廣播到現有的子作用域。除非我錯過了一些東西,超過可能。
任何人都可以解釋這一點嗎?
編輯:我現在的理解是,$rootScope
其實的Scope
功能本身,而不是一個實例Scope
,所有$scope
情況下,以此爲根原型,所以當變量的設置功能Scope
然後他們自然可以訪問各種$scope
實例。
這是準確的嗎?