AngularJS: Wie kann der Standard-Nested-Status mit dem UI-Router festgelegt werden?

8

Ich habe derzeit einen root index.html mit einer einzigen ui-view, die je nachdem, auf welcher "Seite" der Benutzer ist, ersetzt wird, z. Bücher, Spiele usw. Diese Ansicht enthält auf der Seite "Bücher" Inhalte, die ich auf allen Seiten anzeigen möchte, die Teil des Bereichs "Bücher" sind. Der zentrale Inhalt hängt jedoch davon ab, ob der Benutzer aktiviert ist die "Homepage" der Bücher oder ein bestimmtes Buch anzusehen. Um dies zu erleichtern, hat meine books.html einen verschachtelten Status, der entweder books_list.html oder books_detail.html enthält.

Die URL-Struktur, die ich gerne hätte, ist:

  • / books - Zeigt links / rechts Sidepanels sowie eine Liste von Büchern in der Mitte der Seite.
  • / books / 1 - Zeigt die linken / rechten Seitenpanels sowie die Details für das Buch mit der ID 1 in der Mitte der Seite an (die Liste der Bücher wird nicht angezeigt).

Wie kann ich meinen Status so einrichten, dass die Vorlage books.html und die Vorlage books_list.html in der verschachtelten Ansicht angezeigt wird, wenn Sie zu / books navigieren, aber books.html und books_detail.html, wenn Sie zu / books / 1?

Ich komme gerade um dieses Problem herum, indem ich einen "Heim" -Unterzustand habe, aber das heißt, ich muss / books / home haben, und / books zeigt keinen zentralen Inhalt an, daher ist es momentan nutzlos.

%Vor%     
thor 28.11.2014, 17:32
quelle

3 Antworten

14

Ich habe erreicht, was ich brauchte, indem ich einen abstrakten Zustand erklärte:

%Vor%

Dies bedeutet, dass / books sowohl "books" als auch "books.home" lädt, und / books / 1 lädt sowohl "books" als auch "books.detail", was ich benötigte.

    
thor 05.12.2014, 14:43
quelle
1

Ich habe hier ein Arbeitsbeispiel erstellt. Dies entspricht Ihren Bedürfnissen, da es nur zwei Verschachtelungsebenen gibt.

  • books ist ein Elternteil für beide untergeordneten Elemente
    • books.home füllt den mittleren Erea - und ist NICHT übergeordnet von books.detail
    • books.detail ersetzt die Listenansicht - aber das bedeutet, dass $ scope ( books.home ) verloren ist

Zustandsdefinition:

%Vor%

Überprüfen Sie hier

Aber es gibt auch einen anderen Ansatz , den ich mehr mag. Die Listenansicht ist das übergeordnete Element des untergeordneten Elements und kann daher den Bereich $ beibehalten, während zwischen den Details navigiert wird. Ähnliche Sachen wurden hier

besprochen     
Radim Köhler 29.11.2014 06:29
quelle
0

vielleicht versuchen Sie es

%Vor%     
Антон Брагин 28.11.2014 21:21
quelle

Tags und Links