Ich habe eine Direktive geschrieben, die ein postLink
hat, und ich habe einen HTML-Code kompiliert und von angularjs gerendert. Aber das Problem ist, dass ich den HTML-Code nicht aus dem generierten DOM bekommen kann.
Mein Code ist:
%Vor% Sie können sehen, dass ich console.log
verwendet habe, um den Wert von s
zu drucken. Und in der Konsole gibt es aus:
Sie können console.log(s)
und console.log(s[0])
viele Informationen sehen, aber wenn ich outerHTML
verwende, fehlen alle inneren Schaltflächen.
Ich habe auch versucht, jquery: jQuery(s[0]).html()
zu verwenden, aber das gleiche ist passiert.
Was ist der richtige Weg, um s
in HTML-Code umzuwandeln?
Es wäre einfacher, wenn Sie ein Plunkr / jsFiddle-Beispiel bereitstellen könnten, aber ich denke, ich weiß, was los ist. Sie werden von der Konsole getäuscht - wenn Sie console.log (s) ausführen, wird es nicht sofort eingeloggt (es ist asynchron) - die Konsole erhält einen Verweis auf das dom-Element s [0] und zu der Zeit, die es ist bereit zum Drucken eckig ist mit seinem Rendering getan. Auf der anderen Seite sind s [0] .outerHTML und s.html () synchron, daher erhalten Sie das vorgelagerte gerenderte Ergebnis. Um das zu beheben, könntest du einfach ein setTimeout machen:
%Vor%Angular sollte jetzt Zeit haben, es vor dem Callback zu rendern (ich glaube nicht, dass Sie eine Verzögerung brauchen, aber ich könnte falsch liegen). Sie können auch den angularen $ timeout-Dienst verwenden, der die Callback-Funktion mit $ scope umschließt. $ Apply - siehe Ссылка
Tags und Links angularjs angularjs-directive