Skip to main content
 首页 » 编程设计

angularjs之Angular ui-router $state.go 没有在解析中重定向

2024年11月24日9tintown

在我的 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'); 
 
                    } 
                }] 
            } 
        }) 

问题是尽管所有解析代码都成功运行,但用户没有被重定向到 app.home。有人能说出为什么会这样吗?

备注 :状态“app”也有一个解析,它获取要在“app.home”状态下显示的数据。

请您参考如下方法:

.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() 
 
                    } 
                }] 
            } 
        }) 

这对你有用。