2017-09-29 1 views
0

ist das folgende Szenario möglich?Interaktion zwischen zwei Tabs einer Anwendung möglich mit Angular 2?

Nehmen wir an, wir haben eine Anwendung und ich öffne 2 verschiedene Teile der Anwendung in 2 verschiedenen Registerkarten in meinem Browser. Ist es jetzt möglich, einen Teil der Anwendung in einer Art "Listening Mode" zu haben, wenn ich Änderungen in einem Teil der Anwendung vornehme, werden die Änderungen sofort in den anderen Teil implementiert und die Registerkarte wird automatisch aktualisiert und zeigt die Änderungen an Wie es passiert, wenn Sie alle Dinge in nur einem Teil der Anwendung in einem einzigen Tab erledigen würden?

PS: Ich beziehe mich auf das Angular 2-Framework.

+0

ja. Sie können Observables von Ihrem Dienst einrichten und beide Komponenten abonnieren. – pixelbits

Antwort

0

Verwenden Sie einfach JavaScript. Es gibt storage event dafür, das Ereignis verfolgt Änderungen bei Speichern. Machen Sie einen Service wie folgt

$(window).on('storage', storageChanged); 
function storageChanged(){ 
    //all your tabs will listen this event  
} 
0

Wenn Sie über zwei separate Browser-Registerkarten sprechen, denke ich nicht. Ich kann mir jedoch eine Möglichkeit vorstellen, wie Sie Änderungen im Speicher abhören können. In diesem Fall auf eine der Registerkarten ist ein Speicherpunkt zu ändern und die andere auf den gleichen Punkt hört und wendet sie:

$(window).on('storage', storage_changed); 

function storage_changed(event) 
{ 
    if (ev.originalEvent.key != 'youritemname') return; // ignore other changes 
    var message = JSON.parse(ev.originalEvent.newValue); 
    if (!message) return; 

    //apply the changes to the second tab 

} 

Wenn Ihre Tabs nicht sind, den gleichen Code verwenden, müssen Sie den Code hinzufügen beides, sonst wäre das genug.

Wenn sich nun das Element mit dem Namen youritemname ändert, wird ein Ereignis ausgelöst und beide Registerkarten können dies abhören und darauf reagieren.

Die gute Sache ist, dass Sie nicht einmal den Speicher lesen müssen.

0

Ich fürchte nicht, weil jeder Tab eine brandneue Angular-Instanz öffnet und es nicht geteilt wird.

Verwandte Themen