Modaler Dialog mit ui-router von einem beliebigen Elternteil, wie man den Zustand korrekt spezifiziert?

8

Ich versuche einen modalen Dialog zu öffnen, indem ich den ui-Router von Angular benutze, wie erklärt hier .

Das Ziel ist, dass der Dialog überall zugänglich ist, eine URL wird nicht unbedingt benötigt, aber es wäre schön, wenn ich auf eine Seite mit dem geöffneten Dialog verlinken könnte.

Hier ist das gebrochene Beispiel:

Zypern

Klicken auf "Menü" sollte den Dialog von jeder Seite öffnen.

Die Routing-Logik:

%Vor%

Es sollte kein Kind von "app.home" sein, da ich möchte, dass es überall zugänglich ist. Wie kann ich das erreichen?

    
fusio 06.10.2014, 12:53
quelle

1 Antwort

16

Sie können dies mit UI-Router Extras "Sticky States" tun.

Aktualisierte Plunk: Ссылка

Hier ist die modale Demo des UI-Router-Extras: Ссылка

Um dein Plunk zu aktualisieren, habe ich UI-Router Extras hinzugefügt:

%Vor% %Vor%

Ich habe eine benannte ui-view für die App und eine für das modal

hinzugefügt %Vor%

Dann habe ich Ihren App-Status als sticky markiert und Ihren modalen Status zu einem Zustand der obersten Ebene gemacht. Der Effekt ist, dass Sie von einem beliebigen app.* -Zustand zum modalen Zustand navigieren können ... anstatt diesen Status zu verlassen, wird er nur "inaktiviert" und verbleibt im DOM.

%Vor% %Vor%

mit Antwort auf die Frage in Kommentaren aktualisiert:

  

schnelle Frage: Wenn ich dem "Menü" eine URL (/ Menü) gebe und der Benutzer zu dieser URL geht (website.com/menu) gibt es eine Möglichkeit, einen "Standard" Sticky für die App-Ansicht festzulegen? (eine Art Standard-Elternteil der Modalitäten)

Sie können das selbst mit einer Reihe dummer Logik tun.

  • Ist das der erste Übergang?
  • Gehen wir in den modalen Zustand?
  • Dann brechen Sie den Übergang ab und gehen stattdessen in den Standardzustand.
  • Wenn das erledigt ist, gehen Sie in den modalen Zustand.
%Vor%     
Chris T 06.10.2014, 15:39
quelle