2014-12-23 7 views
0

Если у меня есть директива FilePicker, которая содержит в своем шаблоне экземпляр Modal директивы, как я могу получить ссылку на экземпляр регулятора Modal директивы внутри контроллера FilePicker «s ?Как получить доступ к контроллеру из директивы ребенка

Я спрашиваю, конечно, потому что я не могу найти никакого способа сделать это, но это горькое разочарование в свете всего, что я слышал о директивных контроллерах, являющихся краеугольным камнем директивного управления, а не все через $scope.

+1

Вы можете найти элемент внутри шаблона и контроллер вызова(). –

+0

Спасибо @WalterBrand, это единственный способ. Позор, это связано с доступом к DOM, но хорошо. –

ответ

0

Экстра-нечто в шаблоне? Какие? Шаблон - простая строка, и все. О контроллерах: Элементы DOM могут управляться угловыми контроллерами. Директивы применяются к элементам DOM. Затем можно использовать контроллеры. Вы можете просто описать директивный контроллер:

// directive with name parentDirective 
{ 
    link: function() { ... }, 
    restrict: 'A', 
    controller: [ '$scope', function ($scope) { 
     this.sayHello = function() { alert('hello'); } 
     // 'this' references the instance of the directive controller and then can be required by a child 

    }], 
    template: '<div><child-directive/></div>' 

} 

// child directive with the name childDirective 
{ 
    require: '^parentDirective', 
    link: function (scope, $element, attributes, parentDirectiveController) { 
     parentDirectiveController.sayHello(); 
    } 
} 
+0

Это показывает, как получить доступ к контроллеру родительской директивы из дочерней директивы, которая хорошо документирована, но не как идти другим путем. Это как пойти другим путем, о котором я не знал. –

+1

Я не думаю, что это хорошая практика. Тем не менее вы можете искать в родительской директиве через DOM для дочернего элемента DOM, получать его область или данные с помощью $ element.scope() или $ element.data() и делать все, что хотите. Конечно, это можно сделать только после того, как все это будет скомпилировано и связано. –

Смежные вопросы