gpt4 book ai didi

angularjs - 更改 URL 会破坏路由阻止

转载 作者:行者123 更新时间:2023-12-03 06:48:00 25 4
gpt4 key购买 nike

我有一个要求,如果是第一次登录用户,他们必须留在设置页面才能重置密码,以阻止路由在做其他事情之前(或转到其他页面),代码现在 99% 正常工作,我可以更改 url/ 刷新页面,它工作正常,但只有一个问题。这是代码:

.state('accountsetting.security', {
url: '/security/{isFirstTimeUser}',
templateUrl: 'settings/security/security.html',
params: {'isFirstTimeUser': null}
}) // this is where I define the route
// in the run block
.run(['$state','$rootScope',function($state,$rootScope) {
// var isFirstTimeUser = false;
// userinforservice.getUserInformation().then(function(data){
// isFirstTimeUser = data.isFirstTimeUser;
// });

$rootScope.$on('$stateChangeStart', function(event, toState, toParams, fromState, fromParams) {
if(fromState.name!=="undefined" && toState.name=='firsttimeuser'){
$rootScope.isFirstTimeUser=true;
$state.go('accountsetting.security',{isFirstTimeUser:true});
event.preventDefault();
}else if((toParams.isFirstTimeUser || fromParams.isFirstTimeUser) && toState.name !='accountsetting.security'){
$state.go('accountsetting.security',{isFirstTimeUser:true});
event.preventDefault();
}
else{
return;
}
});
}]);

网址如下:https://localhost/app/#/account/security/true正如我提到的,我可以刷新页面或更改网址,例如: https://localhost/app/#/accounthttps://localhost/app/#它们都工作正常,但是当我像这样更改 url 时: https://localhost/app/它会将我带到主页。我检查控制台,在statechangestart中,我丢失了isFirstTimeUser,它是undefind。有什么想法吗?提前致谢。

最佳答案

当您转到根的 url 而不是状态 url(即 #(hash) url)时,您会丢失 Angular 状态。根 url 会重新加载页面,其中您会丢失所有 javascript 变量的内存,因为它们都是客户端。因此该变量是未定义的。

状态更改发生在页面加载的单个实例中,URL 更改会给您一种页面加载正在发生的错觉

关于angularjs - 更改 URL 会破坏路由阻止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38274062/

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