您可以将它们硬编码到您的 shell 视图中,但如果您不想这样做,您可以这样做 -
在您看来,使用 /# 创建一个不执行任何操作的非工作锚点,其中包含 a 路由下拉列表,另一个包含 b 路由下拉列表。
<div class="nav-collapse collapse main-nav">
<div class="btn-group">
<a class="btn" href="/#">
<span class="text">A Routes</span> </a>
<button class="btn dropdown-toggle" data-toggle="dropdown"><span class="caret"></span></button>
<ul class="dropdown-menu pull-right">
<!-- ko foreach: aRoutes -->
<li data-bind="css: { active: isActive }">
<a data-bind="attr: { href: hash }, html: name"></a>
</li>
<!-- /ko -->
</ul>
</div>
<div class="btn-group">
<a class="btn" href="/#">
<span class="text">B Routes</span> </a>
<button class="btn dropdown-toggle" data-toggle="dropdown"><span class="caret"></span></button>
<ul class="dropdown-menu pull-right">
<!-- ko foreach: bRoutes -->
<li data-bind="css: { active: isActive }">
<a data-bind="attr: { href: hash }, html: name"></a>
</li>
<!-- /ko -->
</ul>
</div>
</div>
为 shell 视图模型中的路线创建一些计算可观察量
var aRoutes = ko.computed(function () {
return router.allRoutes().filter(function (r) {
return r.settings.aroute;
});
});
var bRoutes = ko.computed(function () {
return router.allRoutes().filter(function (r) {
return r.settings.broute;
});
});
并在您的路线定义中 -
{
url: 'a1',
moduleId: 'viewmodels/a1',
name: 'A1',
visible: false,
settings: {aroute: true}
},
这会将所有路由设置为 false,然后为它们提供设置为 true 的路由的另一个属性。计算出的过滤器仅显示该设置设置为 true 的路由。