Ich habe eine Direktive geschachtelt innerhalb einer Direktive. Um die Bedürfnisse unserer Entwickler zu erfüllen, benötige ich die Inhalte als direkte Kinder des DOM-Knotens.
<div>
<my-directive style="color: blue;">
<p>Name: {{ ctl_a.fname }} {{ ctl_a.sname }}</p>
<p>External Test: {{ xternal }}</p>
<div>
<nested-directive incoming="ctl_a.a_counter"></nested-directive>
</div>
</my-directive>
</div>
Was sind meine besten Optionen, um diese korrekt zu laden? I.E "my-directive" kann auf ctl_a.fname zugreifen, und "nested-directive" kann auf $ scope.incoming zugreifen, da das Argument von "ctl_a.a_counter" übergeben wird.
Here is a plunk, die die Probleme veranschaulicht, die ich verwende, um $ compile zu verwenden. Wenn ich $ compile verwende, werden die verschachtelten Anweisungen zweimal ausgeführt. Einmal für die kompilierte Methode der äußeren Direktive und noch einmal für die manuelle. Schlimmer noch ist das manuelle das einzige, das scheint, den Inhalt richtig darzustellen.
Wenn ich ng-transclude
verwende, dann funktioniert keines der Attribute, die an die innere Direktive übergeben werden, ohne vorangestellt mit $$ prevSibling oder $ parent, weil ng-transclude einen neuen Bereich zu erstellen scheint. Dies scheint grundsätzlich falsch zu sein, wenn man es so referenzieren muss.
Edit: Hier ist another plunk welche Gabeln die erste. Dieses Mal demonstriere ich ng-transclude und wie ich $ parent verwenden muss, um auf den Controller für seine Direktive zuzugreifen.
Danke.
Warum lassen Sie Angular den Inhalt kompilieren, wenn Sie es schließlich selbst kompilieren? Auch ich bin mir nicht sicher, was deine eigentliche Frage ist. – zeroflagL
_Was sind meine besten Optionen, um dieses korrekt zu laden? _ Wie in, Wie kann ich angular dieses Markup verarbeiten, so dass die Template-Variablen im Kontext ihrer enthaltenen Anweisungen ausgewertet werden. Weil angular diese nicht so kompiliert, wie sie derzeit stehen. –