samedi 1 août 2015

Angular ui-router works fine in firefox but in chrome not

I have simple angular ui router app:

.config(function($stateProvider, $urlRouterProvider){
        $urlRouterProvider.otherwise('');
        $stateProvider
            .state('welcome', {
                url: '/',
                templateUrl: 'components/welcome/welcome.html',
                controller: 'MainController',
                data: {
                    auth: true
                }
            })
            .state('courses', {
                url: '/courses',
                templateUrl: 'components/courses/courses.html',
                controller: 'MainController',
                data: {
                    auth: true
                }

            })
            .state('login', {
                url: '/login',
                templateUrl: 'components/login/login.html',
                controller: 'LoginController',
                data: {
                    auth: false
                }
            })
    })

And when user first time go to browser execute this code:

.run(['$rootScope','$http', '$state', 'UserService','userEmailGetService','isUserLoggedService',
    function ( $rootScope,$http, $state, UserService,userEmailGetService,isUserLoggedService) {
        UserService.CheckIfLogged()
            .success(function(data) {
                userEmailGetService.setUserEmail(data.email);
                isUserLoggedService.setIsLogged(true);
                stateCallback();
            })
            .error(function(data) {
                //console.log(data);
                isUserLoggedService.setIsLogged(false);
                stateCallback();
                $state.go("login");
            });
        this.stateCallback = function() {
            $rootScope.$on("$stateChangeStart", function (event, toState, toParams, fromState) {
                alert("Hello");
                if (toState.data.auth == true && !isUserLoggedService.getIsLogged()) {
                    event.preventDefault();
                    $state.go("login");
                }
                if (toState.data.auth == false && isUserLoggedService.getIsLogged()) {
                    event.preventDefault();
                    $state.go("welcome");
                }
            });
        };
    }])

Routing in Firefox works ok but in Chrome when I logged and I go to login section, browser should ban this redirect and go to welcome section, when I run programmer console in chrome and I redirect to login panel when I logged evrythink works correct, very strange for me. When I added alert in stateChangeStart firefox show me this alert, chrome not, only when I open programmer panel.




Aucun commentaire:

Enregistrer un commentaire