Wie kann ich mit dem Angular-UI -Router die Methode else auf $ stateProvider verwenden oder wie kann ich sie überhaupt verwenden?
95
Wie kann ich mit dem Angular-UI -Router die Methode else auf $ stateProvider verwenden oder wie kann ich sie überhaupt verwenden?
$stateProvider.otherwise
, so wird es mir helfen)Antworten:
Sie können nicht nur verwenden
$stateProvider
.Sie müssen
$urlRouterProvider
einen Code einfügen und erstellen, der ähnlich ist wie:Die
/otherwise
URL muss wie gewohnt in einem Zustand definiert werden:Siehe diesen Link, wo ksperling erklärt
quelle
$stateProvider
. Es ist weniger Arbeit, wenn Sie nur eine Vorlage anzeigen, aber nicht umleiten möchten. Ich bevorzuge die Antwort von @ juan-hernandez.otherwise
(in diesem Fall'/otherwise'
) übergebene Wert mit dem Namen des Status (dem ersten Parameter.state
) oder dem Wert für dieurl
Option übereinstimmen ?Sie können mit
$stateProvider
der Syntax catch all ("*path"
). Sie müssen lediglich eine Statuskonfiguration wie die folgende am Ende Ihrer Liste hinzufügen:Alle Optionen werden unter https://github.com/angular-ui/ui-router/wiki/URL-Routing#regex-parameters erläutert .
Das Schöne an dieser Option
$urlRouterProvider.otherwise(...)
ist, dass Sie nicht zu einem Standortwechsel gezwungen werden.quelle
you're not forced to a location change
?/this/does/not/exist
, bleibt die URL in der Adressleiste so. Die andere Lösung bringt Sie zu/otherwise
Sie können $ state auch manuell in die else-Funktion einfügen, um dann zu einem Nicht-URL-Status zu navigieren. Dies hat den Vorteil, dass der Browser die Adressleiste nicht ändert. Dies ist hilfreich, um zur vorherigen Seite zurückzukehren.
quelle
Ok, der dumme Moment, in dem Sie feststellen, dass die von Ihnen gestellte Frage bereits in den ersten Zeilen des Beispielcodes beantwortet wurde! Schauen Sie sich einfach den Beispielcode an.
Schauen Sie hier.
quelle
Ich möchte nur auf die großartigen Antworten eingehen, die bereits gegeben wurden. Die neueste Version von hat
@uirouter/angularjs
die KlasseUrlRouterProvider
als veraltet markiert . Sie empfehlen jetztUrlService
stattdessen zu verwenden. Sie können das gleiche Ergebnis mit der folgenden Änderung erzielen:Zusätzliche Methoden: https://ui-router.github.io/ng1/docs/1.0.16/interfaces/url.urlrulesapi.html
quelle
Die akzeptierten Antwortreferenzen fragen
angular-route
nachui-router
. Die akzeptierte Antwort verwendet das "Monolithische"$routeProvider
, für das dasngRoute
Modul erforderlich ist (währendui-router
dasui.router
Modul benötigt wird).Die am höchsten bewertete Antwort verwendet
$stateProvider
stattdessen und sagt so etwas wie.state("otherwise", { url : '/otherwise'... })
, aber ich kann in der Dokumentation, auf die sie verweist , keine Erwähnung von "anders" finden . Ich sehe jedoch, dass dies in dieser Antwort$stateProvider
erwähnt wird, in der es heißt:Dort könnte meine Antwort Ihnen helfen. Für mich war es ausreichend,
$urlRouterProvider
einfach so zu verwenden :Mein Vorschlag steht im Einklang mit der
ui-router
Dokumentation ( dieser spezifischen Überarbeitung ), in der eine ähnliche Verwendung der.when(...)
Methode (der erste Aufruf der Funktion):quelle