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>