Я пытаюсь понять "областей" в agularJS и я не могу понять следующий фрагмент кода:Понимание области видимости в Чайлдс директивы
HTML:
<body ng-app="myModule">
<div ng-controller="MyCtrl">
<my-component>
<h2>Attribute</h2>
{{isolatedAttributeFoo}}
</my-component>
<my-component>
<h2>Attribute</h2>
{{isolatedAttributeFoo}}
</my-component>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.min.js"></script>
<script src="app.js"></script>
AngularJS:
var myModule = angular.module('myModule', [])
.directive('myComponent', function() {
return {
restrict:'E',
scope:{}
};
})
.controller('MyCtrl', ['$scope', function ($scope) {
$scope.isolatedAttributeFoo = 'Hello!';
}]);
Как вы можете видеть, это очень простой тест. Насколько я знаю (из примера this), дочерние элементы директивы (в примере, элементы внутри «my-component») наследуют область действия от директивы, и, поскольку область «my-component» изолирована, переменная «isolatedAttributeFoo» НЕ должна принимать значение из переменной «isolatedAttributeFoo» в контроллере ... Но это так. Зачем? Я что-то недопонимаю?
Если вы хотите попробовать это, here - это скрипка.
Вы используете родительскую переменную. Ребенок существует только в директиве inde и может быть напечатан внутри шаблона. – Fals
Ok Fals и @charlietfl, но почему в этом примере скрипта: http://jsfiddle.net/SPMfT/429/ он ведет себя как дочерние элементы внутри директивы, наследует изолированную область действия директивы, без необходимости использовать «шаблон», или "templateURL"? – MorgoZ
, что скрипка использует угловой 1.01, который является слишком старым, чтобы что-то проверить. Я не думаю, что изолированная область была даже доступна тогда – charlietfl