Öffnen eines Modales in einer Route in AngularJS mit angular-ui-bootstrap

7

Ich versuche zu tun, was im Wesentlichen hier beantwortet wurde Unable modales Bootstrap-Fenster als eine Route zu öffnen

Aber meine Lösung wird einfach nicht funktionieren. Ich erhalte einen Fehler

Error: [$injector:unpr] Unknown provider: $modalProvider <- $modal

%Vor%

Ich habe meinen Controller auf Folgendes reduziert:

%Vor%

Letztlich hoffe ich erreichen zu können, dass wenn ein Login erforderlich ist, ich nicht auf die Login-Seite gehe, sondern einen Dialog erstelle.

Ich habe auch versucht, die Funktion onEnter in der Methode ui-router state zu verwenden. Das funktioniert auch nicht.

Irgendwelche Ideen?

AKTUALISIEREN

Ok - so wie es sich herausstellt, bricht ui-bootstrap.js UND ui-bootstrap-tpls dies - Nach dem Lesen der Dokumente dachte ich, dass Sie die Vorlagen benötigen, um mit dem ui-bootstrap zu arbeiten. obwohl es scheint, dass alle Plunker nur in der ..tpls-Datei laden - sobald ich die ui-bootstrap-Datei entfernt habe, funktioniert mein Modal ... Bin ich blind? oder sagt es nicht wirklich, welches du in den docs auf github brauchst? -

Jetzt muss ich nur herausfinden, wie ich verhindern kann, dass meine URL tatsächlich zu / login geht, anstatt nur das modale anzuzeigen:)

update 2

Ok, also indem ich $ state.go ('login') in einem Service anrufe macht das für mich.

    
Darren 19.02.2014, 14:33
quelle

4 Antworten

10

Hi, ich hatte Schwierigkeiten, das ähnliche Problem zu überwinden. Ich konnte es jedoch lösen. Dies ist, was Sie wahrscheinlich brauchen würden.

%Vor%

Klicken Sie hier für Plunker. Hoffe es hilft.

    
KaranVir Sharma 31.08.2015 18:51
quelle
5

Ich arbeite an etwas ähnlichem und das ist meine Lösung.

HTML-Code

%Vor%

Statuskonfiguration

%Vor%

Heimsteuerung

%Vor%

Zum Schluss der modale Instanz-Controller. Dieser Controller synchronisiert die modalen Ereignisse (Öffnen / Schließen) mit URL-Pfadänderungen.

%Vor%     
George I. 01.05.2014 09:48
quelle
3

Sie können einen Zustand mit demselben templateUrl und controller als Ihre Seite erstellen, auf der Sie das Modal anzeigen möchten, indem Sie ihm das Objekt params hinzufügen

%Vor%

Und im Controller der Seite verwenden Sie diesen Parameter, um das modale

zu öffnen %Vor%     
DarthVanger 17.12.2015 12:37
quelle
2

Ich habe einen praktischen Hinweis gefunden, damit das funktioniert. Es gibt wahrscheinlich Vorbehalte, aber es funktioniert für mich. Sie können eine result noch übergeben, aber ich brauche keine.

Die Verwendung von finally anstelle von then promise hat das für mich sortiert. Ich musste auch den vorherigen Zustand auf rootScope speichern, damit wir wussten, worauf wir zurückgehen sollten.

Speichern Sie den vorherigen Status in $ rootScope

%Vor%

Geben Sie mit onEnter

an %Vor%     
harelpls 25.09.2014 06:09
quelle