Wir wollen ein Sidebar-Menü und einen "Haupt" -Bereich haben. Je nachdem, wie Sie navigieren, ändern sich die Menüelemente der Seitenleiste und eine neue Ansicht wird in den Hauptbereich geladen.Aurelia: Kind Router Routen Anzeige in "Haupt" Navigationsleiste und Kind in app.html anzeigen <router-view> Element?
Ich habe app.html mit einem <router-view>
Element erstellt, und eine nav-bar.html, die die Navigation des Haupt-Routers anzeigen kann. Nehmen wir an, ich habe zunächst "Administration" und "Reports" als Routen (und damit Menüpunkte). Wenn ein Benutzer auf "Administration" klickt, möchte ich, dass das Menü aktualisiert wird, um untergeordnete Routen anzuzeigen (z. B. "Benutzer" und "Einstellungen") und dass das Admin-Ansichtsmodell in der App-Version <router-view>
angezeigt wird.
Zunächst habe ich versucht, einen Kind-Router zu erstellen, aber dann muss ich eine neue <router-view>
innerhalb von admin.html haben (die Seite wird nicht einmal ohne diese geladen). Stattdessen möchte ich, dass die Ansicht admin.html innerhalb der <router-view>
app.html angezeigt wird und dass die untergeordneten Routen die "Haupt" -Routen im Navigationsleistenmenü ersetzen.
In app.js ich habe folgende Router config:
this.router.configure((config) => {
config.title = "Welcome";
config.map([
{ route: "", moduleId: "welcom", nav: false, title: "Welcome" },
{ route: "reports", moduleId: "reports", nav: true, title: "Reports" },
{ route: "admin", moduleId: "users", nav: true, title: "Administration" },
]);
});
In users.js habe ich diesen Code:
this.router.configure((config) => {
config.title = "Users";
config.map([
{ route: "", moduleId: "users", nav: true, title: "Users" },
{ route: "settings", moduleId: "settings", nav: true, title: "Settings" },
]);
});
Zunächst sollte das Menü sein:
- Verwaltung
- Berichte
und "welcome.html" sollte die Ansicht in dersein 210 (die Standardroute ist "Willkommen").
Wenn der Benutzer klickt (navigiert zu) "Administration", sollte das Menü aktualisieren:
- Benutzer - Einstellungen
mit "users.html" im <router-view>
.
Um dies überhaupt zum Funktionieren zu bringen, brauche ich eine weitere <router-view>
in "users.html" und das ist nicht wirklich was ich will (ich möchte, dass die Ansicht in die app.html <router-view>
geladen wird).
Gibt es einen Weg, dies in Aurelia zu erreichen? Ich habe sogar versucht, den übergeordneten Router in den Admin-Konstruktor zu injizieren (mit Parent.of(router)
Bindung) und dann router.addRoute()
. Die Route wird hinzugefügt, aber das Menü wird nicht aktualisiert (obwohl es datengebunden ist).
Ich weiß nicht über alle anderen, aber Sie haben mich verloren –
Hallo Matthew - ja das ist kein einfaches "Willkommen" Beispiel! Grundsätzlich möchte ich wissen, ob ich den Haupt-Router mit den Routen von einem Kind-Router "ersetzen" kann. Der "Kinder-Router" aus dem Starter-Kit hat seine eigene Ansicht und Navigation, und das möchte ich nicht - ich möchte den Hauptrouter durch die Routen/Ansichten vom Kind-Router "ersetzen". –
Entschuldigung, ich versuche es, aber ich folge nicht. –