Подтвердить что ты не робот

Является ли $rootScope родителем самого верхнего $scope?

У меня есть общая функция, которая возвращает область верхнего элемента (документа) в моем приложении AngularJS.

function topScope() { 
  return angular.element(document).scope();
}

Это всегда работает, и я всегда гарантированно получаю доступ к любым подкопам, находящимся в приложении (будь то внутри контроллеров или директив).

Вот пример того, что я буду использовать для:

topScope().$emit('pageReady');

Теперь я заметил, что $rootScope также работает одинаково.

$rootScope.$emit('pageReady');

Что также работает и достигает такого же эффекта. Но поскольку $rootScope предназначен для области видимости "$ scope off the shelf" (любая созданная область наследует его методы и свойства), значит, это все равно означает, что это фактически самая верхняя область страницы? Таким образом, являясь родителем объекта области видимости, прикрепленного к документу node?

4b9b3361

Ответ 1

$rootScope является родительской областью всех областей применения данного приложения AngularJS. Поскольку на одной странице можно загружать несколько приложений AngularJS (только вручную это невозможно сделать с помощью ng-app), также возможно иметь несколько экземпляров $rootScope в одном документе HTML.

Каждый $rootScope привязан к элементу, где объявлен ngApp, или элемент, переданный в angular.bootstrap, как описано здесь.

Короче говоря, $rootScope является корнем всех областей для одного приложения AngularJS, но не существует супер-root-области, которая будет служить родительской областью всех других областей для данного документа HTML.

В вашем случае использование $rootScope может быть ОК, если у вас есть только одно приложение AngularJS во всем HTML-документе.