Mehrere Angularjs-Anwendungen (Fahrportlets)

8

Ich habe einen Anwendungsfall, der das Laden von separaten Winkelanwendungen erfordert.

Basierend auf mehreren Fragen zum Stapelüberlauf und diesem Google-Thread ist es machbar. Aber ich kann es nicht zur Arbeit bringen.

Schauen Sie sich die Dokumentation an:

Ссылка

Es sieht so aus, als müssten Sie das Element bereitstellen (was ist der richtige Weg, um das Element zu manipulieren?), und dann, wie es an die Konfiguration, Controller usw. gebunden wird. Und wie würde das mit Routen funktionieren? IE wie funktioniert Kollision, dh app a und app b map / foo zu / fooa.html bzw. /foob.html bzw. ... oder beschreibt jede app ihre eigene .otherwise?

Danke!

    
Robert Christian 24.05.2013, 00:00
quelle

4 Antworten

8

Angesichts der Anforderung, dass dies ein service-getriebener Content sein soll, ist die einzige Möglichkeit, die ich sehen kann, eine Mischung aus eckigen und standardmäßigen HTML-Praktiken. Effektiv möchten Sie eine Seite aus dem Plunker-Buch nehmen und Iframes verwenden, um jedes einzelne Portlet zu enthalten.

%Vor%

Dann benötigen Sie für jedes dieser Portlets eine vollständig separate Anwendung (einschließlich des Ladens von Ressourcen).

%Vor%

Dies ist beim Laden etwas weniger effizient als bei Verwendung einer gemeinsamen Anwendungsbasis, aber im Moment ist dies nicht machbar. Es gibt im ui-router-Team von angular-ui Gespräche über die Kontrolle unabhängiger Ansichten, die eine praktikable Lösung für Sie sein können, aber derzeit nicht implementiert sind. Sie können die Diskussion auf Ссылка und stimme mit deinem Bedarf überein. Es gibt jetzt auch ein spezielles Problem dafür auf der Liste der Probleme mit dem ui-Router unter Ссылка .

Arbeitendes Plumbing dieses Entwurfs: Ссылка

    
Paul Ryan 01.06.2013, 13:36
quelle
2

Ok, also habe ich herausgefunden, wie man das macht, indem man den eckigen ui-router benutzt. Der Schlüssel kommt auf die Fähigkeit des eckigen ui-routers, Zustände zu wechseln, ohne die URL zu beeinflussen.

Die Schritte, damit dies funktioniert

  • Initiieren Sie zuerst jede Anwendung als eigenständige Anwendung mit ein manueller Bootstrap zu einem ID'd-Element.
  • Hängen Sie den ui-router $ stateProvider an jede Anwendung an, um die internen Zustandsübergänge (Routen) zu steuern.
    • Sie müssen den URL-Schlüssel für jeden definierten Status hier weglassen oder Sie setzen die Seite zurück, indem Sie die URL bei jedem Statusübergang ändern.
  • Richten Sie eine Statusfunktion in einem Hauptcontroller ein, um Statusänderungen zu steuern.

Folgendes ist der Code, um das zu erreichen:

%Vor%

Diese Lösung wird im Ссылка

eingesetzt

Bitte beachten Sie meine vorherige Antwort für eine Diskussion, die derzeit auftritt, um die Portlet-Unterstützung im ui-Router intrinsischer zu machen.

    
Paul Ryan 04.06.2013 17:59
quelle
1

Ich habe es herausgefunden. Hier erfahren Sie, wie Sie zwei Winkelanwendungen erfolgreich parallel laden können. Beachten Sie auch, dass ich die Controller für jede App gleich benannt habe, um zu zeigen, dass Abhängigkeiten nicht kollidieren (da sie innerhalb der jeweiligen App über das Modul definiert sind):

%Vor%

Die einzige verbleibende Frage ist, wie man mit Routing-Kollisionen umgehen soll.

    
Robert Christian 31.05.2013 21:17
quelle
0

Nun, Sie haben hier zwei Möglichkeiten: Wenn Sie sie als angular.module () erstellen, gibt es keine Möglichkeit, die Module miteinander zu verbinden.

Wenn Sie -Direktiven mit einer templateURL erstellen, um Ihre Komponenten zu laden, können Sie gemeinsam genutzte Attribute ausstrahlen und ihnen zuhören und , die Sie verwenden könnten Dienste in Ihrer App. Wahrscheinlich wäre das das Beste für dich.

    
Heinrich 24.05.2013 14:26
quelle

Tags und Links