Ng-scope вставлен только для новых областей?
Это может показаться немного глупым. Но у меня проблемы с пониманием, если класс "ng-scope" вставлен только при создании новой области или это что-то еще?
Пример: у меня эти строки кода связаны с контроллером:
<button class="btn" ng-click="open()">Open me!</button>
<div ng-show="selected">Selection from a modal: {{ selected }}</div>
В веб-консоли оба имеют ng-scope:
<button class="btn ng-scope" ng-click="open()">Open me!</button>
<div ng-show="selected" class="ng-scope ng-binding ng-hide">Selection from a modal: </div>
Даже если нет angular -специфических данных, как здесь, он добавит ng-scope:
<div>hello</div>
выходы
<div class="ng-scope">hello</div>
Но почему?
Ответы
Ответ 1
В любом месте есть область применения. Из документация:
Обратите внимание, что Angular автоматически помещает класс ng-scope в элементы где привязаны области. Определение в этом примере выделяет красным цветом новые области видимости. Области ребенка необходимо, потому что ретранслятор оценивает выражение {{name}}, но в зависимости от того, в какой области оценивается выражение, оно производит другой результат.
И в этом ответе @MarkRajcok указывает, что Angular использует их для отслеживания областей (и сбора мусора).
EDIT:
И ответить на ваш отредактированный вопрос. Нет, это не добавляет класс ng-scope
:
<div>hello</div>
Вот плункер, чтобы увидеть это в действии.
Обратите внимание, что класс ng-scope
применяется только к node, где объявлен ng-controller
.
<div ng-controller="Ctrl" class="ng-scope">
<div>hello2</div>
</div>
Ответ 2
всякий раз, когда мы указываем инъекцию зависимостей во время создания модуля angular
(angular.module( 'MYAPP', []);)
то только class= "ng-class" будет добавлен в <body ng-app="myApp "ng-controller="myCtrl" class="ng-class">
. Если мы не укажем DI (angular.module('myApp');), то class= "ng-class" не будет добавлен. Это в случае элемента <body>
. Но кроме элемента <body>
class= "ng-scope" будет добавляться всякий раз, когда мы пишем директиву ng-controller для любого элемента html/tag. Например. <div ng-controller="myDiv"></div>
. Выходной сигнал <div class="ng-scope"></div>