Ich versuche, die Steuerung eines Elternteils „Box“ Richtlinie rekursiv zu erreichen:Wie kann der Controller der übergeordneten Richtlinie rekursiv angefordert werden?
<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>
I Reglergröße erwarten würde undefined
in der Link-Funktion sein, aber ich habe den Controller der Richtlinie tatsächlichen Box .
Also meine Frage ist ... wie, wie dieser Zugriff auf die übergeordneten Steuerung für den Fall zu gewinnen:
<box>
<box></box>
</box>
wie Sie sehen können, gibt es keine ELTERN-Box in meinem ursprünglichen Beispiel, so erwarte ich 'undefined' als vierten Parameter auf die bekommen Linking-Funktion, nicht der Controller der Instanz selbst – maX
Aber Sie erklären einen Controller. Also bekommt der Elternteil diesen Controller und die Kinder (falls vorhanden) erben von ihm. Ist Ihr Ziel zu wissen, ob eine bestimmte Richtlinie der Elternteil oder ein Kind ist? Wenn ja, möchtest du vielleicht den $ parent-Bereich betrachten? – KayakDave
Eigentlich möchte ich in diesem speziellen Fall keinen Scope verwenden, da Scopes schwierig werden können, besonders wenn Sie einen isolierten Scope verwenden müssen. Darüber hinaus empfiehlt es sich, Controller zu verwenden und für die Kommunikation zwischen Direktiven zu verlangen. Mein Punkt ist, dass es wie ein Charme funktioniert, wenn Sie eine Eltern-Direktive mit einem anderen Namen benötigen, warum sollten Sie das nicht rekursiv tun können. – maX