Leiten Sie einen Status mit UI-Router in AngularJS auf den Standard-Unterstatus um
Lesezeit: 4 Minuten
Löwe
Ich erstelle eine Registerkarten-basierte Seite, die einige Daten anzeigt. Ich verwende UI-Router in AngularJs, um Zustände zu registrieren.
Mein Ziel ist es, beim Laden der Seite einen Standard-Tab zu öffnen. Jede Registerkarte hat Unterregisterkarten, und ich möchte, dass beim Wechseln der Registerkarten eine Standard-Unterregisterkarte geöffnet wird.
Ich habe mit getestet onEnter Funktion und innen verwende ich $state.go('mainstate.substate'); aber es scheint aufgrund von Schleifeneffektproblemen nicht zu funktionieren (auf state.go to substate ruft es seinen übergeordneten Zustand auf und so weiter, und es verwandelt sich in eine Schleife).
Diese Lösung stammt von einem netten “Kommentar” zu einem Problem mit der Verwendung von Umleitungen .when()(https://stackoverflow.com/a/27131114/1679310) und wirklich coole Lösung dafür (von Chris T, aber der ursprüngliche Beitrag war von yahyaKacem)
Auf diese Weise können wir jeden unserer Zustände mit seiner Standardumleitung anpassen … Überprüfen Sie es Hier
BEARBEITEN: Option aus Kommentar von @Alec hinzugefügt, um den Browserverlauf beizubehalten.
Dies scheint die Zurück-Taste zu schlagen.
– Scott-Schwert
26. Januar 2016 um 22:53 Uhr
@Swordfish0321 Um den Zurück-Button zu reparieren, nehmen Sie diese kleine Änderung vor: $state.go(to.redirectTo, params, {location: 'replace'}); Dadurch ersetzt der neue Status den vorherigen Status (dh den, von dem wir umgeleitet werden) im Verlauf. Siehe Dokumente für $state.go: angle-ui.github.io/ui-router/site/#/api/…
– Alec
25. April 2016 um 10:44 Uhr
Ich wollte nur hinzufügen, dass dies sehr nah an dem war, was ich tun wollte, aber ich wollte die Standard-URL, anstatt sie zu ersetzen, dies konnte leicht durch Ändern erreicht werden '$stateChangeStart' zu '$stateChangeSuccess'
In der Tat, auch wenn diese Lösung vorgeschlagen wird Radim hat genau den Job gemacht, ich musste mir die Unterregisterkarte (Status) jeder Registerkarte merken.
Also habe ich eine andere Lösung gefunden, die dasselbe tut, sich aber auch jeden Tab-Unterzustand merkt.
Können Sie erklären, was das bewirkt und warum es besser ist als die bereits vorhandenen Antworten?
– Equalsk
28. Dezember 2017 um 10:32 Uhr
Diese Lösung ist die einfachste und hat für mich gut funktioniert.
– BuffMcBigHuge
19. Januar 2018 um 20:19 Uhr
Dies ist bei weitem die beste Antwort. Prägnanter als die Verwendung von Änderungsereignissen. Keine Notwendigkeit, Pakete hinzuzufügen. Ich weiß nicht, wieso das niemandem klar ist. Ich weiß nicht, wie die akzeptierte Antwort so hoch gestimmt wurde.
– CodeWarrior
14. November 2019 um 19:32 Uhr
José Daniel Vivar Personat
Wenn jemand hierher kommt, um eine Antwort zu erhalten, wie man eine einfache Umleitung für einen Zustand implementiert, und wie es bei mir passiert ist, keine Möglichkeit hat, den neuen Router zu verwenden …
Offensichtlich ist die @bblackwo-Antwort wieder großartig, wenn Sie können:
$stateProvider.state('A', {
redirectTo: 'B',
});
Wenn Sie es nicht können, leiten Sie es einfach manuell um:
Können Sie erklären, was das bewirkt und warum es besser ist als die bereits vorhandenen Antworten?
– Equalsk
28. Dezember 2017 um 10:32 Uhr
Diese Lösung ist die einfachste und hat für mich gut funktioniert.
– BuffMcBigHuge
19. Januar 2018 um 20:19 Uhr
Dies ist bei weitem die beste Antwort. Prägnanter als die Verwendung von Änderungsereignissen. Keine Notwendigkeit, Pakete hinzuzufügen. Ich weiß nicht, wieso das niemandem klar ist. Ich weiß nicht, wie die akzeptierte Antwort so hoch gestimmt wurde.
– CodeWarrior
14. November 2019 um 19:32 Uhr
8471700cookie-checkLeiten Sie einen Status mit UI-Router in AngularJS auf den Standard-Unterstatus umyes