首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >角用户界面-路由器$state.go不重定向内部解析

角用户界面-路由器$state.go不重定向内部解析
EN

Stack Overflow用户
提问于 2015-03-16 15:03:07
回答 6查看 22.8K关注 0票数 25

在我的angularjs应用程序中,我正在检查用户在登陆页面上是否已经通过身份验证,然后将其重定向到主页。

代码语言:javascript
复制
.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。有人能说出为什么会这样吗?

Note:状态'app‘也有一个解析,在这个解析中,它获取要以'app.home’状态显示的数据。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2015-03-16 15:53:14

可以有两种方法来解决你的问题

  • 首先,您可以发出一个事件,侦听器将处理您的状态转换。您可以在父控制器中的任何地方实现侦听器。
  • 其次,您可以实现$stateChangeStart钩子并检查重定向条件。 $rootScope.$on(‘$ state stateChangeStart’),函数(事件,toState) { if (toState.name === 'landingpage') { if (!isAuthenticated()) { //检查用户是否允许转换event.preventDefault();//防止迁移到默认状态$state.go('home.dashboard');} });
票数 15
EN

Stack Overflow用户

发布于 2015-06-02 09:40:50

代码语言:javascript
复制
.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()

                    }
                }]
            }
        })

这会对你有用的。

票数 29
EN

Stack Overflow用户

发布于 2015-10-28 12:46:17

您可以使用$location.url('/')代替。

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29080128

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档