module.run() 和 $state.go()

2023-12-26

我可能有某种误解。我使用 Angular ui 路由器,我遇到了下一个问题:

我有下一个状态提供者:

angular
.module('MainApp')
.config(['$stateProvider', '$urlRouterProvider', function ($stateProvider, $urlRouterProvider ) {
    $stateProvider
        .state('register', {
            url: "/",
            abstact: true,
            views: {
                "side-bar": {
                    controller: "GetSideBarCtrl"
                },
                "page-body@register": {
                    templateUrl: "/App/Views/WelcomePage.html"
                }
            },
        })
        .state('register.Register', {
            url: "Register",
            views: {
                "page-body": {
                    controller: "RegisterCtrl",
                    templateUrl: "/App/Views/Register.html"
                }
            },
        })
        .state('register.Login', {
            url: "Login",
            views: {
                "page-body": {
                    controller: "LoginCtrl",
                    templateUrl: "/App/Views/Login.html"
                }
            },
        })
        //For registered and loged in users!
    /* */
        .state('main', {
            url: "/:userId",
           // abstact: true,
            views: {
                "side-bar": {
                    controller: "GetSideBarCtrl"
                },
                "page-body@main": {
                  //  controller: "LoginCtrl",
                    templateUrl: "/App/Views/MainPage.html"
                }
            },
        });
    $urlRouterProvider.otherwise('/');
}]);

并运行函数

angular
.module('MainApp')
.run(['$rootScope', '$state', '$cookieStore', 'principal',
function ($rootScope, $state, $cookieStore, principal) {
    var cookies = $cookieStore.get('user');
    if (cookies) {
        principal.Authenticate(cookies.split(' ')[0], cookies.split(' ')[1]);
        $state.go('main', { userId: cookies.split(' ')[0] });
    } else {
        $state.go('register.Login');
    }
}]);

一切正常,当 cookie 存在且身份验证工作没有任何问题时,但 $state.go 不执行任何操作,我不明白为什么,您能帮我解释一下吗?


是的,正如所建议的,$state.go() 在 module.run() 中似乎无法正常工作。

我发现将 $state 代码放入 $timeout 中是可行的,例如

angular.module('MainApp').run($timeout, $state, ...) {

    $timeout(function() {
        $state.go('main');
    });

}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

module.run() 和 $state.go() 的相关文章

随机推荐