gpt4 book ai didi

durandal - Durandal 中的条件路由

转载 作者:行者123 更新时间:2023-12-02 08:04:15 25 4
gpt4 key购买 nike

在我基于 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

一个可能的解决方案是在 moduledetailcanActivate 中放置一个 navigateTo ,如下所示:

function canActivate()
{
if (!loggedIn)
router.navigateTo(`#/login/moduledetail/1`)
return false;
}

但是在 canActivate 期间导航到另一个页面似乎很愚蠢。

有什么方法可以告诉Durandal在路由时,在这种情况下使用这条路由吗?

最佳答案

在 Durandal 2.0 中,这是使用 router.guardRoute 实现的:

auth = require('auth');
router.guardRoute = function(model, route) {
return auth.loggedIn() || '#/login';
};

据我所知,尽管没有记录,但该行为在 Durandal 1.x 中的工作方式相同。 Guard Route 是在 viewModel 加载之后、在 View 模型上调用 activate 之前调用的函数。如果为 true,则继续进行路由。如果是字符串,则路由器会尝试导航到与该字符串关联的路由。

关于durandal - Durandal 中的条件路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19119544/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com