Konvertiert kompiliertes dom in HTML-Code in angularjs

8

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?

    
Freewind 28.01.2013, 15:52
quelle

1 Antwort

4

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 Ссылка

    
user2264760 10.04.2013 07:00
quelle