对于在Durandal 2.1中路由到同一moduleId的两条路由,isActive不成立

时间:2014-09-30 21:52:39

标签: durandal-2.0 durandal-navigation

我有一条非常基本的路线,我几乎没有修改过Durandal Documentation

基本上,我正在设置一条默认路线,该路线应该路由到我的主屏幕。

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>

这会为文件历史记录,办事处,贡献者和用户创建链接。但是,如果我通过默认路由浏览到该站点,则文件历史记录导航链接不会标记为isActive,尽管它是所选模块。

当激活其中任何一条时,如何同时获得前两条路线以共享“isActive”可观察数?

1 个答案:

答案 0 :(得分:2)

这似乎没有在文档中的任何地方提及,但route可以采用一系列可能的路线。我实际上遇到了这个涉及Durandal的错误报告。

因此,通过指定我的&#34;文件历史记录&#34;路线如下,我得到了预期的效果:

{ route: ['', 'file-history'], moduleId: 'viewmodels/file-history', title: 'File History', nav: true },