Übergeordnetes Modul als Abhängigkeit

8

Meine Anwendung hat ein Winkelmodul:

%Vor%


Das Modul hat auch einen Service, um Input / Output-Dinge zu realisieren:

%Vor%


Später möchte ich die dataStore Variable mit JSON in einer Datei als Objekt speichern.

Jetzt habe ich ein iframe in meiner Anwendung, um einige Inhalte mit Tabs anzuzeigen, man könnte es so etwas wie einen Browser nennen.


Um einige Einstellungen vornehmen zu können, wollte ich es in einem iframe machen. Um die Daten in einer Datei zu speichern, muss ich die IO_Service aufrufen, die in der übergeordneten Anwendung

ist

In meinem iframe habe ich ein Modul:

%Vor%

mit einem Controller

%Vor%

Also muss ich eine Abhängigkeit angeben, damit das Elternmodul ioService verwendet, um die Funktion pushData aufzurufen.

Hat jemand ein paar Tipps, um das zu realisieren?

    
Ba5t14n 15.12.2014, 09:02
quelle

2 Antworten

1

Alles DoctorMick sagt hier ist korrekt und muss durchgeführt werden, um auf den Dienst überhaupt in Ihrem Controller zugreifen zu können.

Darüber hinaus müssen Sie die Tatsache ansprechen, dass der Eltern- und der Iframe keinen JavaScript-Kontext teilen:

Antwort der gleichen Domain

In Ihrem Modul muss dataStore entweder window.dataStore oder window.parent.dataStore (oder möglicherweise window.top.datastore ) sein, abhängig davon, ob das Modul in einen iframe oder als Hauptseite geladen wurde:

%Vor%

Oder etwas in diesem Sinne. Finde heraus, ob du im Iframe oder Elternteil geladen bist und entweder an deine eigene (als Eltern) dataStore oder an die dataStore der Eltern anknüpfst.

Die domänenübergreifende Antwort

Der Hauptrahmen und der Iframe sind völlig unabhängig - sie könnten auch (fast) zwei verschiedene Browser-Tabs sein - also teilen sie nichts aus einer Javascript-Datenperspektive. Ohne eine Art von Iframe-Kommunikationsbibliothek zu verwenden oder eine API (über WebSockets, vielleicht?) Zu verwenden, um sie zu sichern, werden Sie nicht in der Lage sein, die beiden Frames zur Kommunikation zu bringen.

Wenn Sie Ihr Problem als zwei unterschiedliche Anwendungen betrachten - den 'Browser-Container' und eine Sammlung von 'Browsern' - und nach einer geeigneten Anwendungs-zu-Anwendungs-Kommunikation suchen, könnte das hilfreich sein.

Wenn Sie also eine clientseitige Lösung wünschen, müssen Ihre Methoden pushData(key, value) und getData(key) in ioService nur einen Kommunikationsmechanismus umbrechen, der entweder mit dem systemeigenen Window.postMessage API oder eine Bibliothek wie postmessage oder Bullauge .

    
floatingLomas 14.01.2015 23:29
quelle
0

Alles, was Sie tun müssen, ist, das Einstellungsmodul wissen zu lassen, hängt vom IO-Betriebsmodul ab, und sobald dies erledigt ist, können Sie den IO-Service einfach so verwenden, als befände er sich im selben Modul:

%Vor%     
DoctorMick 15.12.2014 09:09
quelle

Tags und Links