Ich habe eine Direktive erstellt, um etwas HTML zu kompilieren und dann an mein Element zu binden.
Hier die Richtlinie
export class BindCompileHtmlDirective implements ng.IDirective {
restrict = 'A';
link = (scope: ng.IScope, element: any, attrs: any, ctrl: any) => {
scope.$watch((scope) => {
console.log(attrs);
//Also tried attrs.BindCompileHtmlDirective which returns undefined
//Tried attrs.$attr.bindCompileHtml also which returns 0 too
return scope.$eval(attrs.bindCompileHtml);
}, (value) => {
console.log(value);
// In case value is a TrustedValueHolderType, sometimes it
// needs to be explicitly called into a string in order to
// get the HTML string.
element.html(value && value.toString());
var $phe = this.$compile(element.contents())(scope);
//element.after($phe);
});
}
constructor(private $compile: any) {
}
static factory(): ng.IDirectiveFactory {
const directive = ($compile: any) => new BindCompileHtmlDirective($compile);
directive.$inject = ['$compile'];
return directive;
}
}
angular.module('rundeckManager.directives')
.directive('bindCompileHtml', BindCompileHtmlDirective.factory());
ist und hier ist die Umsetzung:
<span id="id-of-span" bind-compile-html="{{TabsDomains.domainsLabelHtml}}"></span>
Das attrs Objekt sieht gut aus und enthält den Wert der Zeichenfolge ich brauche, hier zu kompilieren ist das Objekt attr :
Aber meine direkten ive gibt 0 als Wert anstelle der kompilierten Zeichenfolge zurück und ich verstehe nicht warum.
Wenn jemand erklären und helfen kann, wäre es wirklich hilfreich.
haben Sie versucht, mit nur' return attrs.bindCompileHtml; '? Ich könnte falsch liegen, aber ich denke '$ eval' ist für eckige Ausdrücke, nicht HTML, vielleicht als eckiger Ausdruck wird dieser HTML als 0 betrachtet? Der 'bindCompileHtml'-Inhalt scheint bereit zu sein, wie er in dem DOM platziert wird. Wenn Sie zum Beispiel ausführen möchten, was im 'ng-click' steht, hätten Sie' $ eval' (nach dem Extrahieren des Inhalts des ng-clicks, nicht auf dem gesamten html) – Kaddath
Sie hatten absolut Recht! Das hat gut funktioniert, danke! Ich werde es als Antwort auf die Frage veröffentlichen! –
Gern geschehen, froh zu helfen! – Kaddath