【发布时间】:2014-03-20 07:16:47
【问题描述】:
当我尝试使用子路由时,我得到“找不到路由”。为了涵盖我的基础,这里是应用程序中路由的设计方式。
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>
为什么找不到路线?
【问题讨论】:
-
我认为您的子路由器中的 moduleId 应该是“LOC”而不是视图模型。
-
@nimgrg 我更改了moduleid,但仍然无法正常工作。当页面第一次加载时,它实际上加载了 LCClientSearch 视图。所以,在页面加载的时候是在寻找子路由,只是点击子路由链接时导航不起作用。
标签: knockout.js requirejs durandal single-page-application durandal-2.0