Adi*_*iqq 1 aurelia aurelia-router
假设我们有bootstrap 3导航栏,模板的一部分可能如下所示:
<ul class="nav navbar-nav">
<li repeat.for="row of router.navigation" class="${row.isActive ? 'active' : ''}">
<a data-toggle="collapse" data-target="#skeleton-navigation-navbar-collapse.in" href.bind="row.href">${row.title}</a>
</li>
</ul>
Run Code Online (Sandbox Code Playgroud)
这也是Aurelia docs的例子.
现在让我们说,我想添加一个带下拉列表的项目:
<ul class="nav navbar-nav">
<li repeat.for="row of router.navigation" class="${row.isActive ? 'active' : ''}">
<a data-toggle="collapse" data-target="#skeleton-navigation-navbar-collapse.in" href.bind="row.href">${row.title}</a>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">Dropdown <span class="caret"></span></a>
<ul class="dropdown-menu">
<li><a href="#">Some page</a></li>
<li><a href="#">Some other page</a></li>
</ul>
</li>
</ul>
Run Code Online (Sandbox Code Playgroud)
如何为此下拉列表配置路由?我需要第二个路由器吗?儿童路由器?
nav属性根据我的经验,该nav物业充其量只是一个很好的概念证明.实际上,大多数应用程序都有更复杂的菜单,更适合于它们背后更复杂的数据结构.
对于不太复杂的情况,尤其是不太可能接收更复杂路由的定义良好的应用程序,只需将它们硬编码到视图中即可.
<ul class="nav navbar-nav">
<li>
<a data-toggle="collapse" data-target="#skeleton-navigation-navbar-collapse.in" href="#/first">
First
</a>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">Menu <span class="caret"></span></a>
<ul class="dropdown-menu">
<li><a href="#/sub-one">Sub Item 1</a></li>
<li><a href="#/sub-two">Sub Item 2</a></li>
</ul>
</li>
</ul>
Run Code Online (Sandbox Code Playgroud)
这种策略失去了所有有趣的,华丽的Aurelia数据绑定.但它可能会节省你的时间.它简单明了,不会留下任何漏洞.它只是HTML.这个主要的缺点是需要对该isActive属性进行一些额外的编码,但是编写此代码比尝试编写动态嵌套菜单要容易得多.
对于更复杂,动态的情况,特别是当您不知道在运行时期望什么时,我建议您创建自己的类或界面来描述您的菜单.
车型/ menuItem.ts
export interface MenuItem {
title: string;
route?: string | string[];
children?: MenuItem[];
}
Run Code Online (Sandbox Code Playgroud)
app.ts
const MENU = [{
title: 'First',
route: '#/first'
},{
title: 'Menu',
children: [{
title: 'Sub Item 1',
route: 'sub-one',
},{
title: 'Sub Item 2',
route: '#/sub-two'
}]
}];
Run Code Online (Sandbox Code Playgroud)
这有点复杂,但为您提供了大量的可定制性和灵活性,默认路由器navModel没有.
| 归档时间: |
|
| 查看次数: |
1725 次 |
| 最近记录: |