2015-01-14 9 views
8

Ich habe zwei verschiedene eckige Apps. Ich muss eine Ansicht von 'app_2' mit iframe in 'app_1' öffnen. Ich muss auch einige Daten von 'app_1' zu 'app_2' posten. Wie erreicht man dies in angularJS?Wie kommuniziert man mit iframe zwischen 2 eckigen Apps?

Vielen Dank im Voraus. #SOS

+0

warum Sie Rendern diese beiden App in zwei verschiedenen iframe? Was wirst du damit erreichen? –

Antwort

14

Ich würde verwenden betrachten postMessage mit ...

In Angular Bedingungen würde dies bedeuten, dass ein App-Nachrichten senden würde und die andere, um Nachrichten zuhören würde.

Also auf der App, die innerhalb des iframe sitzt können Sie eine Fabrik machen, die die folgenden:

/** 
* App that sits within iframe: 
* 
* Inject this factory into your controller and call 
* iFrame.messageParentIframe({hello: 'world'}) to send messages 
* to the parent iFrame 
*/ 
angular 
    .module('app') 
    .factory('iFrameMessenger', function($window) { 
    return { 
     messageParentIframe: function(message) { 
     $window.parent.postMessage(message, '*'); 
     } 
    }; 
    }); 

auf der übergeordneten iFrame Code sollte wie folgt aussehen:

/** 
* App that is on parent iframe: 
* 
* Just using a controller for the sake of simplicity, 
* but you could also use a Factory that only receives 
* messages from iFrames and handle them according to each 
* action, etc. You can get creative here on how you want 
* to handle it. 
*/ 
angular 
    .module('app') 
    .controller('AppCtrl', function($window) { 
    $window.addEventListener('message', function() { 
     // handle messages received from iframe 
    }); 
    }); 
+3

Ich wollte so etwas ... Vielen Dank @sergiocruz :) –

+0

Tolles Beispiel. Ich denke, Sie sollten removeEventListener() vom $ destroy-Ereignis in AppCtrl aufrufen, nur um sicherzustellen, dass nichts geleakt wird. – Damiox

+0

Was ist mit dem anderen Weg herum (Eltern senden eine Nachricht an Kind iFrame), so haben wir ein komplettes Beispiel für eine Diskussion zwischen den beiden? – Ksyqo

Verwandte Themen