Я столкнулся с довольно неинтуитивным аспектом директив AngularJS, и мне любопытно, есть ли логическая причина такого поведения. Когда я указать контроллер в определению директивы:Задание контроллера в определении директивы не создает новую область
angular.module('MyApp.directives', [])
.directive('myDirective, function() {
templateUrl: "my-template.html",
controller: "MyController"
};
область шаблона в директивах является одинаковым для всех экземпляров директивы.
Однако, если я не указать контроллер в определении директивы:
angular.module('MyApp.directives', [])
.directive('myDirective, function() {
templateUrl: "my-template.html"
};
и вместо того, чтобы определить контроллер непосредственно на директиве, используя ng-controller
:
<my-directive ng-controller="MyController"/>
каждый экземпляр MyController
получает собственный охват ребенка.
Я ожидал, что эти подходы приведут к тем же результатам, но, по-видимому, Angular рассматривает область контроллера по-разному в зависимости от того, как объявлен контроллер. Есть ли причина для этой разницы?