【发布时间】:2016-05-13 18:42:40
【问题描述】:
在 Aurelia 应用程序中,我定义了一个简单的路线,如下所示:
configureRouter(config: RouterConfiguration, router: Router) {
config.title = 'Marino';
config.map([
{ route: ['', 'home'], name: 'home', moduleId: './pages/home/home', nav: true, title: 'Home' },
{ route: 'colors', name: 'colors', moduleId: './pages/colors/overview', nav: true, title: 'Colors' }
]);
this.router = router;
}
通过像这样实现repeat.for和href.bind,正如所有示例所提到的那样,这可以完美地工作:
<ul class="main-navigation">
<li repeat.for="row of router.navigation" class="${row.isActive ? 'active' : ''}">
<a class="btn btn-primary" href.bind="row.href">${row.title}</a>
</li>
</ul>
我的场景中的挑战是我也想动态地将带有子菜单项的路线呈现到这个菜单。像这样的:
<ul class="main-navigation">
<!-- the regular 'regular' menu and works just fine -->
<li repeat.for="row of router.navigation" class="${row.isActive ? 'active' : ''}">
<a class="btn btn-primary" href.bind="row.href">${row.title}</a>
</li>
<!--
below is the pickle; a different kind of element (non-clickable),
but with child elements
-->
<li class="main-navigation-dropdown">
<a class="btn btn-primary">Menu with Submenu-items</a>
<div class="horizontal-dropdown-menu">
<a class="btn btn-primary sideline">Submenu 1</a>
<a class="btn btn-primary sideline">Submenu 2</a>
<a class="btn btn-primary sideline">Submenu 3</a>
</div>
</li>
</ul>
让我困惑的是两件事:
- 如何在路由配置中正确定义子菜单项?
- 如何有条件地将每条路线呈现为常规(可点击)路线或带有子菜单的不可点击项?
我查看了RouteConfig docs,但似乎找不到关于“嵌套”子路由的任何信息。 Aurelia Getting Started 确实提供了有关子路线的信息,但在我看来,所有示例都与在另一个组件上显示“其他”或第二个菜单有关。
我确信这很简单,但我似乎无法解决它。
【问题讨论】:
-
您是否在子导航中使用子路由器?问题在于,在您导航到子模块之前,路由不会注册,因此无法在主导航菜单中进行迭代......我已经设法使用包含的路由配置服务来实现类似的工作每个模块将查询以获取其路由的完整路由设置
标签: javascript aurelia