Sam*_*Sam 24 angularjs angular-ui-router
在我的angularjs应用程序中,我正在检查用户是否登陆着陆页并且已经过身份验证,然后将其重定向到主页.
.state('landingpage', {
abstract: "true",
url: "/landingpage",
templateUrl: "app/landingpage/landingpage.html",
resolve: {
AutoLoginCheck: ['$state', '$window', function ($state, $window) {
if($window.localStorage.access_token != null)
{
if($window.sessionStorage.access_token == null) {
$window.sessionStorage.access_token = $window.localStorage.access_token;
}
UserInfoService.SetUserAuthenticated(true);
// it is not redirecting
return $state.go('app.home');
}
}]
}
})
Run Code Online (Sandbox Code Playgroud)
问题是虽然所有解析代码都成功运行,但用户没有被重定向到app.home.有人能说出为什么会这样吗?
注意:状态'app'还有一个解决方案,它可以获取要在'app.home'状态下显示的数据.
Shy*_*azi 27
.state('landingpage', {
abstract: "true",
url: "/landingpage",
templateUrl: "app/landingpage/landingpage.html",
resolve: {
AutoLoginCheck: ['$state','$window', '$q','$timeout', function ($state, $window,$q,$timeout) {
if($window.localStorage.access_token != null)
{
if($window.sessionStorage.access_token == null) {
$window.sessionStorage.access_token = $window.localStorage.access_token;
}
UserInfoService.SetUserAuthenticated(true);
$timeout(function() {
$state.go('app.home')
},0);
return $q.reject()
}
}]
}
})
Run Code Online (Sandbox Code Playgroud)
这对你有用.
ptw*_*two 15
您的问题可以有两种解决方案
首先,您可以发出一个事件,监听器将处理您的状态转换.您可以在父控制器中的任何位置实现侦听器
其次,您可以实现$ stateChangeStart挂钩并检查您的重定向条件
$rootScope.$on('$stateChangeStart', function (event, toState) {
if (toState.name === 'landingpage') {
if (!isAuthenticated()) { // Check if user allowed to transition
event.preventDefault(); // Prevent migration to default state
$state.go('home.dashboard');
}
}
});
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
21209 次 |
| 最近记录: |