我有一个非常基本的路线,我几乎没有从Durandal文档中修改过。
基本上,我正在设置一个默认的路由,它应该路由到我的主屏幕。
define([
'durandal/system',
'plugins/router',
'durandal/app'
], function (system, router, app) {
return {
router: router,
activate: function () {
router.map([
{ route: '', moduleId: 'viewmodels/file-history', title: 'File History' },
{ route: 'file-history', moduleId: 'viewmodels/file-history', title: 'File History', nav: true },
{ route: 'bureaus', moduleId: 'viewmodels/bureaus', title: 'Bureaus', nav: true },
{ route: 'contributors', moduleId: 'viewmodels/contributors', title: 'Contributors', nav: true },
{ route: 'users', moduleId: 'viewmodels/users', title: 'Users', nav: true }
]).buildNavigationModel();
return router.activate();
}
};
});
然后,我有了一个带有以下HTML生成的导航栏的视图。
<ul class="nav" data-bind="foreach: router.navigationModel">
<li data-bind="css: { active: isActive }">
<a data-bind="attr: { href: hash }, html: title"></a>
</li>
</ul>
这将为"文件历史记录"、"管理局"、"参与者"one_answers"用户"创建链接。但是,如果我通过默认路径浏览到网站,则"文件历史记录"导航链接不会标记为"活动",尽管它是所选模块。
当其中一条被激活时,我如何让我的前两条路线都共享"isActive"可观察到的信息?
文档中似乎没有提到这一点,但route
可以采用一系列可能的路线。事实上,我在查阅杜兰达尔的错误报告时遇到了这种情况。
因此,通过如下指定我的"文件历史记录"路径,我得到了预期的效果:
{ route: ['', 'file-history'], moduleId: 'viewmodels/file-history', title: 'File History', nav: true },