Knockout.js 在Durandal子路由中未找到路由错误

Knockout.js 在Durandal子路由中未找到路由错误,knockout.js,requirejs,durandal,single-page-application,durandal-2.0,Knockout.js,Requirejs,Durandal,Single Page Application,Durandal 2.0,当我尝试使用子路由时,得到“未找到路由”。下面是如何设计应用程序中的路由的 main.js文件包含顶部导航的路由,如下所示- router.map([ { route: 'LOC', moduleId: 'LOC', title: 'LC', nav: 3 } ]); 我将页面页脚的路径映射为- router.map('About', 'About',

当我尝试使用子路由时,得到“未找到路由”。下面是如何设计应用程序中的路由的

main.js文件包含顶部导航的路由,如下所示-

                    router.map([
                        { route: 'LOC', moduleId: 'LOC', title: 'LC', nav: 3 }
                    ]);
我将页面页脚的路径映射为-

        router.map('About', 'About', 'About', false);
    router.map('Help', 'Help', 'Help', false);
当用户单击上面创建的“LOC”路线时,左导航显示在该视图上。该视图使用子路由,并设置为-

var childRouter = router.createChildRouter()
    .makeRelative({
        moduleId: 'viewmodels/',
        fromParent: true
    }).map([
                        { route: '*LCClientSearch', moduleId: 'LCClientSearch', title: 'Create LC', type: 'intro', hash: '#LCClientSearch', nav: true },
                        { route: '*LCPending', moduleId: 'LCPending', title: 'Pending LC', type: 'intro', hash: '#LCPending', nav: true }

    ]).buildNavigationModel();
LOC默认为LCClientSearch路由,并在开始时正确显示该路由,但是,从该点开始不会发生任何正确的情况。当用户单击LCClientSearh或LCPending时,我得到“未找到路由”错误

LOC视图-

     <div class="span2 well">
    <ul class="nav nav-list">
        <li class="nav-header">Availability</li>

        <!--ko foreach: availability-->
        <li data-bind="css: { active: isActive }">
            <a data-bind="attr: { href: hash }, text: title"></a>
        </li>
        <!--/ko-->

        <li class="nav-header">Manual Post</li>


        <!--ko foreach: ManualPost-->
        <li data-bind="css: { active: isActive }">
            <a data-bind="attr: { href: hash }, text: title"></a>
        </li>
        <!--/ko-->
    </ul>
</div>

    可用性
  • 手动立柱

为什么找不到路由?

我怀疑是因为您的父路由没有splat-。尝试将路由从父视图更改为:

router.map([
    { route: 'LOC*details', moduleId: 'LOC', title: 'LC', nav: 3 }
]);
然后将子路由更改为:

[
    { route: 'LCClientSearch', moduleId: 'LCClientSearch', title: 'Create LC', type: 'intro', nav: true },
    { route: 'LCPending', moduleId: 'LCPending', title: 'Pending LC', type: 'intro', nav: true }
]

然后应该分别匹配路由
LOC/LCClientSearch
LOC/LCPending

我认为子路由器中的moduleId应该是'LOC'而不是viewmodels。@nimgrg我更改了moduleId,但仍然不起作用。当页面第一次加载时,它实际上很好地加载了LCClientSearch视图。因此,当页面加载时,它正在查找子路由,只是当单击子路由链接时导航不起作用。谢谢!你猜对了。我唯一需要添加的另一项内容是在父项中添加一个哈希(哈希:“#LOC”)。太棒了,很高兴我能帮忙:-)嗨@gerrod,首先感谢你的回答。我已经成功地实现了这一点,它的工作就像一个魅力!但不幸的是,当我尝试导航到父路由(例如:LOC)时,它会在控制台中显示一条消息,例如:“route Not Found LOC”。如有任何帮助或建议,将不胜感激。谢谢!:)