lin*_*xie 3 angularjs angular-ui-router
我有一个要求,以防止路由如果是第一次登录的用户,他们必须留在设置页面,以重置密码做别的事情之前(或去其他页面),代码为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;
}
});
}]);
Run Code Online (Sandbox Code Playgroud)
网址如下:https:// localhost/app /#/ account/security/true
正如我所提到的,我可以刷新页面或更改网址,如:https:// localhost/app /#/ account 或https://localhost/app /#
他们都工作正常,但当我更改这样的网址时:
https:// localhost/app /它将带我到主页.我检查控制台,在statechangestart,我输了isFirstTimeUser,它是undefind.有什么想法吗?提前致谢.
当你转到根的url而不是状态url(即)#(hash)url时,你会失去角度状态.根URL重新加载页面,其中您丢失了所有javascript变量的内存,因为它们都是客户端.因此变量是未定义的.
状态更改发生在单个页面加载实例中,网址更改会给您一种错觉,就像发生页面加载一样
| 归档时间: |
|
| 查看次数: |
193 次 |
| 最近记录: |