Aurelia: дочерние маршруты маршрутизатора отображаются в «главной» навигационной панели, а дочерние - в элементе app.html <router-view>?
Мы хотим иметь боковое меню и «главную» область. В зависимости от того, как вы перемещаетесь, пункты меню боковой панели изменятся, и в «основную» область будет загружен новый вид.
Я создал app.html с<router-view>
элемент и nav-bar.html, который может отображать навигацию основного маршрутизатора. Допустим, у меня изначально есть «Администрирование» и «Отчеты» в качестве маршрутов (и, следовательно, пунктов меню). Когда пользователь нажимает кнопку «Администрирование», я хотел бы обновить меню, чтобы отобразить дочерние маршруты (скажем, «Пользователи» и «Настройки»), и чтобы модель представления администратора отображалась в файле app.html.<router-view>
.
Первоначально я пытался создать дочерний маршрутизатор, но затем у меня должен быть новый<router-view>
внутри admin.html (без этого страница даже не загрузится). Вместо этого я хочу, чтобы представление admin.html отображалось внутри<router-view>
из app.html, и для дочерних маршрутов, чтобы заменить «основные» маршруты в меню панели навигации.
В ap, p.js у меня есть следующая конфигурация маршрутизатора:
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" },
]);
});
В users.js у меня есть этот код:
this.router.configure((config) => {
config.title = "Users";
config.map([
{ route: "", moduleId: "users", nav: true, title: "Users" },
{ route: "settings", moduleId: "settings", nav: true, title: "Settings" },
]);
});
Изначально меню должно быть:
- Администрация
- отчеты
и "welcome.html" должен быть представлением в<router-view>
(маршрут по умолчанию «добро пожаловать»).
Когда пользователь нажимает (переходит к) «Администрирование», меню должно обновиться, чтобы:
- Пользователи - Настройки
с "users.html" в<router-view>
.
Однако, чтобы заставить это работать вообще, мне нужно иметь дальнейшее<router-view>
в "users.html", и это не совсем то, что я хочу (я хочу, чтобы представление загружалось в app.html<router-view>
).
Есть ли способ достичь этого в Аурелии? Я даже пытался внедрить родительский маршрутизатор в конструктор администратора (используяParent.of(router)
обязательный), а затемrouter.addRoute()
, Маршрут добавляется, но меню не обновляется (даже если оно связано с данными).