Ich mache eine App mit dynamischen Zuständen, und manchmal muss ich den Statusnamen von der URL auflösen.
Beispiel: Ich habe /dashboard/user/12268
und ich muss den Status 'dashboard.user'
erhalten.
Gibt es eine Möglichkeit, dies mit den Tools von ui-router
zu tun? Ich kann nicht herausfinden, wie man das jetzt macht ...
Ich mache eine App mit dynamischem Modulladen mit requireJS. Zum ersten Mal gibt es kein Problem, da der Benutzer in den Anmeldestatus gesendet wird. Nach der Anmeldung verwende ich require, um nur die Status zu laden, auf die der Benutzer Zugriff hat. Aber wenn der Benutzer die Seite neu lädt, lade ich die Module erneut und muss die URL in einen Zustand auflösen, und da ist das Problem. Ich habe angefangen mit urlMatcherFactory zu versuchen, kann sie aber nicht lösen.
Der Status wird nach der URL-Auflösung geladen.
Der Fluss ist (nach dem Aktualisieren der Seite http://localhost:8090/index.html#/dashboard/user/12268
):
ui-router
geladen Um die Zustände nach dem Bootstrap der Anwendung zu laden, habe ich eine Variation von Ben Nadels Lösung , die Zustände und Konstanten enthält.
Mein data-main
in RequireJS hat diesen Initialisierungscode:
Die loadManifest
-Funktion registriert alle After-Bootstrap-Elemente in meiner App (Dienste, Fabriken, Controller, Router, ...).
Danke für Ihre Hilfe,
Alx
Sie können die Implementierung des internen Status anzeigen, indem Sie den .decorator
Hook für $stateProvider
verwenden. Sie können jede Eigenschaft des Status-Builders dekorieren. Ich habe 'Eltern' willkürlich gewählt.
Jetzt können Sie mit .$$state()
, z. B.
Zweitens durchlaufen Sie jeden Zustand in $ state.get () und testen Sie sie mit Ihrem URL-Fragment.
%Vor% Schließlich musste ich eine kleine Änderung am $state
-Dienst von ui-router vornehmen, um zur Lösung zu gelangen.
Daraus ergibt sich, dass die im Service gespeicherten Status mehr Informationen enthalten als die in der Methode $state.get()
angegebene. Also habe ich über sie iteriert, um einen Zustand zu erhalten, der meiner URL entspricht:
Grüße, Alx
Um @Chris T Lösung für mich arbeiten zu lassen, mache ich dies in einem Service:
%Vor%Später kann ich Helper irgendwo injizieren und mache das:
%Vor% Der aktuelle Status kann von $ state service abgerufen werden. wie $state.current
Überprüfen Sie diese api Ссылка
Tags und Links javascript angularjs angular-ui-router angular-ui