【发布时间】:2015-04-18 06:43:56
【问题描述】:
我们想要一个侧边栏菜单和一个“主要”区域。根据您的导航方式,侧边栏的菜单项会发生变化,并且会在“主”区域加载一个新视图。
我创建了带有<router-view> 元素的app.html 和一个可以显示主路由器导航的nav-bar.html。假设我最初将“管理”和“报告”作为路由(因此也是菜单项)。当用户单击“管理”时,我希望更新菜单以显示子路由(例如“用户”和“设置”),并在 app.html 的<router-view> 中显示管理视图模型。
最初我尝试创建一个子路由器,但后来我必须在 admin.html 中创建一个新的<router-view>(没有这个页面甚至无法加载)。相反,我希望 admin.html 视图显示在 app.html 的 <router-view> 内,并让子路由替换导航栏菜单中的“主”路由。
在 app.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>中的视图(默认路由是'welcome')。
当用户单击(导航至)“管理”时,菜单应刷新为:
- 用户
- 设置
在<router-view> 中添加“users.html”。
但是,为了让它完全正常工作,我需要在“users.html”中再添加一个<router-view>,这并不是我真正想要的(我希望将视图加载到 app.html 的 @987654330 @)。
有没有办法在 Aurelia 中实现这一点?我什至尝试将父路由器注入 Admin 构造函数(使用Parent.of(router) 绑定)然后router.addRoute()。路由被添加,但菜单没有更新(即使它是数据绑定的)。
【问题讨论】:
-
我不知道其他人,但你失去了我
-
嗨,马修 - 是的,这不是一个简单的“欢迎”示例!基本上我想知道我是否可以用来自子路由器的路由“替换”主路由器。入门套件中的“子路由器”有自己的视图和导航,我不希望这样 - 我想用子路由器的路由/视图“替换”主路由器。
-
对不起,我正在尝试,但我没有遵循。
-
嗨 Matthew - 看起来你想要一个两级菜单。一旦用户导航到
Administration,您希望他们如何返回初始菜单集? -
哈哈不是我,我希望你现在认出我的名字;)