实际上,这相当容易。您只需将属性添加到路线的settings
目的。您可以将其命名为任何您想要的名称。它将包含子菜单的菜单项集合。只需使用它来构建子菜单即可。
这是一个例子:https://gist.run?id=beb5ba9155fdb2ccefcf78676879b1ca https://gist.run?id=beb5ba9155fdb2ccefcf78676879b1ca
app.html
<template>
<ul>
<li repeat.for="row of router.navigation" class="${row.isActive ? 'active' : ''}">
<a href.bind="row.href">${row.title}</a>
<ul>
<li repeat.for="sub of row.settings.subRoutes">
<a route-href="route.bind: row.config.name; params.bind: sub.params">${sub.name}</a>
</li>
</ul>
</li>
</ul>
<div class="page-host">
<router-view></router-view>
</div>
</template>
app.js
import {activationStrategy} from 'aurelia-router';
export class App {
configureRouter(config, router) {
config.title = 'Aurelia';
config.map([
{
route: ['', 'one'],
name: 'one',
moduleId: 'one',
nav: true,
title: 'Page 1',
activationStrategy: activationStrategy.invokeLifecycle,
settings: {
subRoutes: [
{
name: 'Sub-choice 1',
params: {
'foo': 'bar'
}
},
{
name: 'Sub-choice 2',
params: {
'foo': 'two'
}
}
]
}
},
{ route: 'two', name: 'two', moduleId: 'two', nav: true, title: 'Page 2' }
]);
this.router = router;
}
}
one.html
<template>
Page One<br />
Params:<br />
<pre><code>${params}</code></pre>
</template>
one.js
export class One {
activate(params) {
this.params = JSON.stringify(params);
}
}
您传递的参数可以是您喜欢的任何参数。例如,它们可能是有关应在您要去的路线上的子路由器上激活什么路线的信息。你可以打电话router.navigate...
在页面的激活方法中(one.js
在下面的示例中)导航到子路由器上的正确路由。您确实可以做任何您想做的事情,因为您可以将任何您想要的旧东西放在该设置对象上。