angularjs – 如何将url传递给ui-router的$stateChangeStart
发布时间:2020-12-17 18:08:44 所属栏目:安全 来源:网络整理
导读:如果用户未登录,我使用以下内容将路由重定向到登录: angular.module('app').run(['$rootScope','$location','$state','AuthService',function($rootScope,$location,$state,AuthService) { /* redirect to login if not logged in */ $rootScope.$on( '$sta
如果用户未登录,我使用以下内容将路由重定向到登录:
angular.module('app').run(['$rootScope','$location','$state','AuthService',function($rootScope,$location,$state,AuthService) { /* redirect to login if not logged in */ $rootScope.$on( '$stateChangeStart',function(e,toState,toParams,fromState,fromParams) { if(toState.name === "login"){ return; // already going to login } if(!AuthService.user) { e.preventDefault(); $state.go('login'); } }); }]); 如何将URL从“已阻止”状态传递到登录状态,以便我可以在登录后继续导航到该状态? 示例:用户单击myapp.com/#/path/to/data的链接 – >重定向到myapp.com/#/login – >用户登录 – >用户路由到myapp.com/#/path/to/data 我基本上需要将/ path / to / data发送到我的登录控制器,以便我可以处理它.我似乎无法在$stateChangeStart监听器中的任何状态或参数变量中找到’/ path / to / data’. 解决方法
$state服务有一个
href 方法,可以根据状态及其参数创建一个URL.由于这些是提供给状态更改侦听器的,因此您可以创建一个URL,然后将其作为参数传递给登录状态.
$rootScope.$on('$stateChangeStart',fromParams) { if (toState.name === "login") { return; // already going to login } if (!AuthService.user) { e.preventDefault(); var redirectUrl = $state.href(toState.name,toParams); $state.go('login',{ redirect: redirectUrl }); } }); 您需要在登录状态中添加重定向参数,以便可以使用它. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |