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:
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.
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
besprochenTags und Links angularjs angular-ui-router