Как да осъществя достъп до дъщерен и родителски контролер в директива?

Имаме две директиви, наречени parent и child. И двата имат дефинирани контролери, които притежават някаква функционалност. За директива child можем:

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

Така че въпросът е: как можем да посочим както дъщерния, така и родителския контролер във функцията за връзка на 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