Я получил включенную директиву, например «Директива» и другую случайную директиву «bДиректива». Моя задача: я хочу получить переменную области видимости aDirective's и поймать ее в bДиректива.
angular.module('myApp',[])
.controller('bDirective',['$scope',function(scope){
scope.getScopeVar = function () {
// here I want to get aDirective - s 'someVar' variable
scope.someVar;
debugger;
};
scope.getScopeVar();
}])
.directive('aDirective',function(){
return{
scope:{},
transclude:true,
template:'<div>123</div>',
link: function(scope, element, attrs, controller, transclude){
scope.someVar = 'asd';
transclude(scope, function (clone) {
element.append(clone);
});
}
};
});
Какие-нибудь решения? С уважением, Ник.
Вложенная директива должна require
директива сверху. Затем он может получить свой контроллер в качестве аргумента функции link
(4-й).
.directive('nestedDirective', function(){
return {
require: '^aDirective',
link: function (scope, elements, attrs, aDirectiveController) {
// access aDirectiveController's methods or properties
}
}
})
Вы используете директиву require
во вложенной (включенной) директиве, а не в той, которая объявляет включение с помощью transclude: true
.
Спасибо за Ваш ответ. Есть ли способ сделать это без требуется: '^ aDirective',? Потому что эта директива включить: истина является глобальной директивой, и я не могу требовать от нее только одну конкретную директиву.