2014-02-13 6 views
5

Ich versuche eine Winkelanweisung innerhalb eines Iframes zu erhalten. Der Iframe stammt nicht von einer externen Domäne und muss daher verwendet werden, sodass Stile der App, die den Iframe enthält, nicht auf den Inhalt im Iframe angewendet werden.Eine AngularJS-Anweisung zum Arbeiten in einem iframe erhalten

Here is a simple Plunker von dem, was ich tun muss.

Wie Sie sehen können, funktioniert das Element mit der my-draggable-Anweisung außerhalb des Iframes, aber nicht innerhalb.

Soweit ich feststellen kann, werden diese als mit dem gleichen Ursprung anerkannt, daher die Fähigkeit der Elternseite, Inhalt in den Iframe zu injizieren. Ich habe auch versucht, document.domain für den iframe und die Elternseite einzustellen. Gleiche Ergebnisse.

Handelt es sich um das gleiche Ursprungspolicy-Problem oder hängt es mit dem Winkelbereich zusammen?

+0

Möchten Sie Angular wirklich die Vererbung von Bereichen zwischen dem Iframe-Container und dem Iframe-Inhalt fortsetzen? Sie benötigen separate Anwendungen und verwalten die Kommunikation zwischen beiden. Siehe http://stackoverflow.com/questions/19125910/is-it-possible-to-update-angularjs-expressions-inside-of-anniframe – lib3d

+0

Ja, ich möchte fortfahren und Bereich zwischen der App und dem iframe teilen . Die Idee ist, dass eine Vorschau dessen, was in der App gemacht wird, in den Iframe geladen wird. Der Benutzer kann dann die Vorschau bearbeiten, indem er Objekte zieht, und diese Änderungen werden an die App zurückgemeldet. – andypants

+0

@andypants hast du eine Lösung gefunden? Ich möchte etwas ähnliches machen ... – jetcom

Antwort

0

Angular wird während der Kompilierungsphase nicht in den Iframe absteigen, da der Iframe ein separates DOM ist. Theoretisch könnten Sie ifrm.innerWindow.document.body zu $compile übergeben, dann verknüpfen Sie es zu einem neuen Bereich. Aber zu diesem Zeitpunkt ist Ihr Iframe zu einem sehr klobigen ngInclude geworden, also warum nicht einfach das verwenden?