Wenn ich ein Attribut Direktive habe, zum Beispiel so etwas wie diese:Angular Attribut Richtlinie - fügen Sie eine ng-repeat unter dem aktuellen Richtlinie
<select multiple ... ng-model="ctrl.model" custom-directive="ctrl.customModel" />
wo lassen sie sagen, dass ngModel
und customModel
Arrays sind. Gibt es einen Weg, ich kann innerhalb der Richtlinie Code ein Stück html unter die Direktiven Element, die Zugriff auf den Geltungsbereich der Richtlinie haben könnte und in der Lage, die beziehen, so dass es am Ende so etwas aussieht :
<select multiple ... ng-model="ctrl.model" custom-directive="ctrl.customModel" />
<div><!-- this code gets added by the custom-directive directive and uses it's scope -->
<span ng-repeat="item in customDirectiveCtrl.customModel" ng-bind="item.property"></span>
</div>
ich weiß, ich html manuell jqLite verwenden, aber diese html keinen Zugriff Umfang auf die Richtlinie hinzufügen können. Der Grund, warum ich die custom-directive
-Direktive nicht von einer Attribut-Direktive in eine Elementrichtlinie konvertieren möchte, ist, dass es das Hinzufügen von Attributen wie id, name, required, disabled, ... zu den darunter liegenden Template-Elementen erschwert dieses Beispiel ein select
Element)
EDIT: wie hier angefordert ein Beispiel dafür, wie ein Element nach dem Richtlinien-Element hinzuzufügen:
{
restrict: 'A',
require: 'ngModel',
scope: { customModel: '=customDirective' },
link: function(scope, element, attrs, ngModel) {
//element.after('<div></div>'); //this adds a div after the directives element
element.after('<div><span ng-repeat="item in customModel" ng-bind="item.property"></span></div>'); //this will add the html in the string, but will not interpret the angular directives within since (i assume) that it is not bound to any scope.
}
}
Jede Winkelkomponente/Richtlinie wie folgt hinzugefügt wird nicht funktionieren richtig oder überhaupt.
Können Sie den Code für Ihre Anweisung posten, der dieses Element hinzufügt? Sie sollten in der Lage sein, ein Snippet mit hinzugefügtem HTML zu erstellen und den $ compile-Dienst zu verwenden, um es an den gewünschten Bereich anzuhängen. – mcgraphix
@mcgraphix Ich habe ein Beispiel für das Hinzufügen von beliebigem HTML nach dem Direktiven-Element hinzugefügt. Was Sie sagen, ist, dass ich '$ compile' in meine Direktive injizieren und es für das Ergebnis von' element.after' verwenden könnte, um den Ausdruck mit dem Direktiven-Bereich zu kompilieren? – MrPlow
Die Anweisung 'select' ist eine Elementrichtlinie, die keinen Bereich verwendet. Es wird nicht gut mit einer Attributrichtlinie funktionieren, die den isolieren Bereich verwendet. Auch die 'select' Direktive verwendet das' ng-Modell' Attribut für eigene Zwecke. Die benutzerdefinierte Anweisung sollte vermeiden, das Attribut 'ng-model' für verschiedene Zwecke zu verwenden. – georgeawg