Ich habe diese Zustandsstruktur:
%Vor% Es funktioniert gut, außer wenn die URL einfach /places
ist, ohne dass eine Stadt dahinter steht.
Wie kann ich einen Standardwert für templateUrl
im untergeordneten Status haben?
Ich denke, der beste Weg wäre, die ui-view von PlacesController
zu setzen, aber das scheint nicht möglich zu sein.
Wie auf der Angular-UI Wiki-Seite angegeben:
Es gibt drei Möglichkeiten, einen Zustand zu aktivieren:
- Rufen Sie $ state.go () auf. High-Level-Komfort-Methode.
- Klicken Sie auf einen Link mit der Anweisung ui-sref.
- Navigieren Sie zu der URL, die dem Status zugeordnet ist.
Versuchen Sie, einen anderen untergeordneten Status zu definieren, dessen URL auf eine leere Zeichenfolge festgelegt ist:
%Vor% Fügen Sie dann abstract: true
zum übergeordneten Status hinzu.
Sie müssen Ihre Standardvorlage direkt zwischen den ui-view
-Tags in Ihrem HTML-Code einfügen, ohne dass die Statuskonfiguration geändert werden muss:
Wenn Sie jetzt zu /places
navigieren, sehen Sie die Nachricht "Bitte wählen Sie einen Ort". Wenn Sie zu /places/london
navigieren, sehen Sie "London is amazing!".
Wie von Aaron angegeben, können Sie $ state verwenden, um zu einem Standard-Child-Status zu navigieren, aber hier gibt es einen Haken: Angenommen, Sie haben mehr als 1 Kind:
%Vor%und in Ihrem übergeordneten Controller PlacesController haben Sie $ state.go (places.city) . Wenn der übergeordnete Controller dh PlacesController aufgerufen wird, werden Sie zum Stadtstatus umgeleitet . Wenn sich also jemand im Zustand child2 befindet und eine Aktualisierungsschaltfläche drückt, wird der übergeordnete Controller aufgerufen und er wird in die Stadt umgeleitet, was nicht gewünscht ist!
ANS: So können Sie nach dem aktuellen Status suchen, bevor Sie eine Umleitung durchführen, dh wenn sich die Person im Elternstatus befindet und dann zu einem Standard-Kindstatus umleitet, aber wenn sich die Person in einem der untergeordneten Status befindet dann führe die Umleitung im übergeordneten Controller nicht aus: -
%Vor%hoffe das hilft!
Verwenden Sie die Auflösung für den übergeordneten Status
%Vor%Prüfe auf Syntaxfehler, ich bin an coffeescript gewöhnt:)
Tags und Links angularjs angular-ui-router