Как получить доступ к дочернему и родительскому контроллеру в директиве?

У нас есть две директивы, называемые parent и child. Оба они имеют определенные контроллеры, которые выполняют некоторые функции. Для директивы child мы можем:

  • получить доступ к parent controller со свойством require (require: '^parent'), получив, таким образом, четвертый параметр нашей функции связи с его значением: function link(scope, elem, attrs, parentCtrl)
  • доступ child controller: без использования require, четвертый параметр ссылки будет нашим дочерним контроллером.

Итак, вопрос: как мы можем ссылаться на оба дочерний и родительский контроллеры в функции ссылки child? Вот плункер с примером: http://plnkr.co/edit/WzU6iJgf2zLLApFHeiEG?p=preview< /а>


person boyomarinov    schedule 20.04.2015    source источник


Ответы (1)


Вы можете передать массив свойству 'require' определения вашей директивы, которое включает в себя как вашу дочернюю директиву, так и вашу родительскую директиву. Четвертым параметром вашей функции ссылки будет массив:

app.directive('childDirective', function() {
    require: ['childDirective', '^parentDirective'],
    link: function(scope, element, attr, ctrls) {
        var childCtrl = ctrls[0];
        var parentCtrl = ctrls[1];
        ...
    }
});
person pixelbits    schedule 20.04.2015