Ответ 1
$rootScope
var, который указывает на родительский элемент всех областей и может быть введен во всюду. Все остальные области являются дочерними элементами $rootScope
. Они создаются с помощью метода $new
$rootScope
, поэтому каждая область наследуется от $rootScope
.
В источнике angular в определении конструктора Scope
есть строка:
function Scope() {
this.$id = nextUid();
...
this['this'] = this.$root = this;
...
Кажется, что $root
var является просто заполнителем для this
первой созданной области - $rootScope
.
Далее этот фрагмент кода в методе $new
:
$new: function(isolate) {
...
if (isolate) {
child = new Scope();
child.$root = this.$root;
...
return child;
Таким образом, $root
var каждого дочернего объекта сферы $rootScope
является ссылкой на $rootScope
. И все дети этих детей получат одинаковую ссылку на $rootScope
По-моему, лучше использовать $rootScope
через инъекцию зависимостей, потому что это явный и общий более часто используемый способ обращения к $rootScope