Mam następujący scenariusz: dyrektywy transclude z izolowanym zakresu, który ma sterownik dołączony do niego:dyrektywa o dostępie jest od dołączany elementów
angular.module('app', [])
.directive('hello', function() {
return {
controller: function($scope) {
$scope.hello = "Hello World";
},
restrict: 'E',
replace: true,
transclude: true,
template: '<div class="hello" ng-transclude></div>',
scope: {}
};
});
Nie mogę się doczekać, aby uzyskać dostęp do kontrolera dyrektywy jest od dołączany elementów :
<hello>
<h1>Hello Directive</h1>
<p>{{ hello }}</p>
</hello>
To jednak nie wydaje się możliwe. Próbowałem uzyskać dostęp do hello
z $parent
i $$nextSibling
.
Czy istnieje rozwiązanie tego scenariusza? Nie jestem w stanie umieścić kontrolera w opakowaniu wokół instancji dyrektywy.
stworzyłem codepen wykazać to zachowanie: http://codepen.io/jviotti/pen/ktpbE?editors=101
W niedziałającym przykładzie szablon oczekuje, że zmienna {{hello}} znajduje się w głównym katalogu głównym, ale faktycznie znajduje się w zasięgu dyrektywy hello. – goldins
Artykuł na https://www.airpair.com/angularjs/posts/transclusion-template-scope-in-angular-directives pomógł mi zrozumieć, dlaczego działa w ten sposób. – sven