AngularJS Transcluded область видимости директивы из другой директивы

Я получил включенную директиву, например «Директива» и другую случайную директиву «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);
      });
    }
    };
});

Какие-нибудь решения? С уважением, Ник.

Знаете ли вы, что директивы являются одной из самых мощных и универсальных функций Angular?
Знаете ли вы, что директивы являются одной из самых мощных и универсальных функций Angular?
Директивы позволяют расширять HTML новыми элементами и атрибутами и даже создавать собственные структурные директивы для манипулирования DOM. С...
Разница между Angular и React
Разница между Angular и React
React и AngularJS - это два самых популярных фреймворка для веб-разработки. Оба фреймворка имеют свои уникальные особенности и преимущества, которые...
0
0
35
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вложенная директива должна require директива сверху. Затем он может получить свой контроллер в качестве аргумента функции link (4-й).

.directive('nestedDirective', function(){
 return {
   require: '^aDirective',
   link: function (scope, elements, attrs, aDirectiveController) {
     // access aDirectiveController's methods or properties
   }
 }
})

Спасибо за Ваш ответ. Есть ли способ сделать это без требуется: '^ aDirective',? Потому что эта директива включить: истина является глобальной директивой, и я не могу требовать от нее только одну конкретную директиву.

KoboldMines 29.10.2018 10:19

Вы используете директиву require во вложенной (включенной) директиве, а не в той, которая объявляет включение с помощью transclude: true.

fracz 30.10.2018 07:44

Другие вопросы по теме