Я пытаюсь достичь контроллера родительской «в поле» директива рекурсивно:Как получить доступ к контроллеру родительской директивы, требуя его рекурсивно?
<body ng-app="main">
<!-- no nesting: parent is the just body -->
<box></box>
<script type="text/javascript">
angular.module('main', [])
.directive('box', function() {
return {
restrict: 'E',
controller: function() { },
require: '?^box', // find optional PARENT "box" directive
link: function(scope, iElement, iAttrs, controller) {
// controller should be undefined, as there is no parent box
alert('Controller found: ' + (controller !== undefined));
}
};
});
</script>
</body>
Я бы ожидать переменный контроллер, чтобы быть в функции связи undefined
, но я получаю контроллер фактической директивы коробки ,
Так что мой вопрос ... как получить доступ к контроллеру РОДИТЕЛЕЙ в случае, как это:
<box>
<box></box>
</box>
как вы можете видеть, нет РОДИТЕЛЕЙ коробки в моем исходном примере, поэтому я ожидаю получить 'undefined' в качестве четвертого параметра для а не контроллер самого экземпляра – maX
Но вы объявляете контроллер. Таким образом, родитель получает этот контроллер, а дети (если они существуют) наследуют его. Ваша цель узнать, является ли конкретная директива родителем или ребенком? Если это возможно, вы хотели бы посмотреть на $ parent scope? – KayakDave
На самом деле я не хочу использовать область видимости в этом конкретном случае, так как области действия могут оказаться сложными, особенно если вам нужно использовать изолированную область. Кроме того, лучше всего использовать контроллеры и «требовать» для связи с директивой. Я считаю, что он работает как шарм, когда вам требуется родительская директива с другим именем, почему бы вам не сделать это рекурсивно. – maX