Javascript Durandal空/空路由
我有一个主要/详细的情况。我想使用一个孩子路由器,这样我就可以(a)充分利用历史模块,(b)只在孩子身上触发入口转换。以下是我的设置: Shell.js 用户控制器 当我导航到Javascript Durandal空/空路由,javascript,durandal,durandal-2.0,durandal-navigation,Javascript,Durandal,Durandal 2.0,Durandal Navigation,我有一个主要/详细的情况。我想使用一个孩子路由器,这样我就可以(a)充分利用历史模块,(b)只在孩子身上触发入口转换。以下是我的设置: Shell.js 用户控制器 当我导航到#/users/5时,它工作得非常出色。但是,当我导航到#/users时,正如预期的那样,它会触发未找到的路由,取消导航,并将我返回到#/users/5。当找不到路由时,我应该如何配置它以禁用子视图?理想情况下,我想要这样的东西: 用户控制器 路由器将成功导航到“”路由,但null参数将指示它清空路由器绑定处理程序。这目前
#/users/5
时,它工作得非常出色。但是,当我导航到#/users
时,正如预期的那样,它会触发未找到的路由,取消导航,并将我返回到#/users/5
。当找不到路由时,我应该如何配置它以禁用子视图?理想情况下,我想要这样的东西:
用户控制器
路由器将成功导航到“”路由,但null参数将指示它清空路由器绑定处理程序。这目前不是Durandal的功能。我在pull请求中添加了对此类内容的支持,您可以找到,以防您希望向应用程序添加对空路由的支持。您可能需要在
canActivate
中检查id
并返回true代码>如果有,返回{redirect:'emptyidroote'}代码>否则。或者,更简单的方法是将第二个示例中的null替换为“EmptyIdulote”。问题是,我真的不希望一个空的视图/模型四处浮动。我正在寻找一条指令,告诉durandal路由器清空路由器容器。谢谢:)
// configure the shell router
router.map([{
...
},{
route: 'users*edit',
title: 'User List',
moduleId: 'viewmodels/users'
}]).activate();
this.router = router
.createChildRouter()
.makeRelative({ fromParent: true })
.map({ route: ':id', moduleId: 'viewmodels/edit' })
this.router = router
.createChildRouter()
.makeRelative({ fromParent: true })
.map([
{ route: ':id', moduleId: 'viewmodels/edit' },
{ route: '', moduleId: null }
])