Ich habe ein Element, an das ich HTML binden möchte.
<div ng-bind-html="details" upper></div>
Das funktioniert. Jetzt habe ich auch eine Direktive, die an das gebundene HTML gebunden ist:
$scope.details = 'Success! <a href="#/details/12" upper>details</a>'
Aber die Direktive upper
mit dem Div und dem Anker wird nicht bewertet. Wie bringe ich es zum Laufen?
angularjs
angularjs-directive
Amitava
quelle
quelle
Antworten:
Ich war auch mit diesem Problem konfrontiert und nach stundenlangem Durchsuchen des Internets las ich @ Chandermanis Kommentar, der sich als Lösung erwies. Sie müssen eine 'compile'-Direktive mit diesem Muster aufrufen:
HTML:
JS:
Sie können hier eine funktionierende Geige davon sehen
quelle
function(scope, element, attrs)
, woher haben Sie diese drei Argumente, Umfang , Element und Attribute ?link
Eigenschaft. Sie werden jedes Mal automatisch übergeben, wennlink
sie vom Angular-Framework aufgerufen werden. Sie werden immer verfügbar sein.$sce.trustAsHtml
andere Funktion zum Erstellen des HTML-Codes verwendet haben, der mit dieser Anweisung "kompiliert" wird, sollten Sie ihn entfernen. Vielen Dank an @apoplexyDanke für die tolle Antwort vkammerer. Eine Optimierung, die ich empfehlen würde, ist das Aufheben der Wiedergabe, nachdem die Kompilierung einmal ausgeführt wurde. Das $ eval innerhalb des Watch-Ausdrucks kann Auswirkungen auf die Leistung haben.
Hier ist eine gegabelte und aktualisierte Geige.
quelle
.directive()
Code in dem in der Antwort angegebenen Code jedoch nicht.$eval
- Sie können es einfachattrs.compile
direkt anstelle der beobachteten anonymen Funktion verwenden. Wenn Sie nur einen Zeichenfolgenausdruck angeben, wird Angle$eval
ihn trotzdem aufrufen .Fügen Sie diese Direktive angle-bind-html-compile hinzu
Verwenden Sie es so:
Wirklich einfach :)
quelle
Leider habe ich nicht genug Ruf, um einen Kommentar abzugeben.
Ich konnte das ewig nicht zum Laufen bringen. Ich habe meinen
ng-bind-html
Code geändert , um diese benutzerdefinierte Direktive zu verwenden, aber ich konnte den Code nicht entfernen, der$scope.html = $sce.trustAsHtml($scope.html)
erforderlich war, damit ng-bind-html funktioniert. Sobald ich dies entfernt hatte, begann die Kompilierungsfunktion zu funktionieren.quelle
Für jeden, der sich mit Inhalten befasst, die hier bereits durchlaufen
$sce.trustAsHtml
wurden, war das, was ich anders machen mussteDies ist nur der
link
Teil der Direktive, da ich ein anderes Layout verwende. Sie müssen den$sce
Service sowie injizieren$compile
.quelle
Beste Lösung, was ich gefunden habe! Ich habe es kopiert und es funktioniert genau so, wie ich es brauchte. Danke, danke, danke ...
in richtlinie link funktion habe ich
und in Direktivenvorlage:
quelle