在我的基于 HotTowel 的项目中,我使用 Durandal 1.1.1 进行路由。
我有一个登录路线,如果用户未登录,我想激活它。
我的路线配置是这样的:
var routes = [ {
url: 'login',
moduleId: 'viewmodels/login',
name: 'Login',
visible: true,
caption: 'Login'
},{
url: 'moduledetail/:id',
moduleId: 'viewmodels/moduledetail',
name: 'ModuleDetail',
visible: true,
caption: 'ModuleDetail'
}
我希望如果用户想要去#/moduledetail/1
并且尚未经过身份验证,浏览器导航到路由#/login/moduledetail/1
,以便在成功登录路由后返回到#/moduledetail/1
.
一个可能的解决方案是放入navigateTo
类似canActivate
的moduledetail
:
function canActivate()
{
if (!loggedIn)
router.navigateTo(`#/login/moduledetail/1`)
return false;
}
但是在此期间导航到另一个页面canActivate
似乎很愚蠢。
有什么方法可以告诉 Durandal 在路由时,在这种情况下使用这条路由?