In AngularJS, wie kann ich Sie entfernen ein element erstellt durch Verwendung von $kompilieren?
Ich geschrieben habe, ein einfaches Beispiel, wo ich ein element erstellen, die dynamisch mit $compile. Dieses neue element hat einen anderen button, mit dem will ich zum entfernen dieses element (ich habe gelesen, dass es gut ist, zu zerstören, Bereich/Elemente zur Vermeidung von Leckagen). Aber die Funktion closeThisElement() funktioniert nicht; bitte um Hilfe.
Sehen plunker hier: http://plnkr.co/edit/js7mpUMndjZEdMvRMuZk?p=preview
Auch die Reproduktion Teil des Codes unten:
link: function($scope, $element) {
function closeThisElement(){
$element.remove();
}
function addComment(){
$element.append($compile('<div class="publishComment"><input type="text" ng-model="contentForReply"/><button ng-click="publishReply(contentForReply); closeThisElement()">Publish Reply</button></div>')($scope));
}
$scope.addComment = addComment;
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sie haben, um über den $scope. Derzeit sind Sie nur Funktionen zur Verfügung, um Ihren link, aber nicht innerhalb des html-Codes. Dies versuchen.
Beseitigen nur die kompilierte Komponente, speichern Sie die Instanz und verwenden.
Es vielleicht erwähnenswert, dass eher als das erstellen und entfernen, ein neues element, die Sie verwenden konnte, ng-und ng-hide, und nie haben, um es zu kompilieren.
Die Funktion closeThisElement muss ein Teil der $scope für den es zu evaluieren, in Ihren HTML:
$scope.closeThisElement = closeThisElement;
Obwohl, die
$element
im Winkel-link-Funktion bezieht sich auf die Richtlinie-element selbst.$element.remove()
wird, entfernen Sie die Richtlinie aus dem DOM. Sie könnenangular.element()
(alias für jQuery-lite) zu finden, die angehängt Inhalte und zu entfernen, halten Sie die tk-listview-element.Können Sie
template
odertemplateUrl
in der Richtlinie Konfiguration: