$ state.go()在第二次使用refesh登录之前不会更改页面?

时间:2017-07-05 12:47:22

标签: javascript angularjs

我的项目使用angularJS 1.6.2 问题是用户信息是正确的,但不会通过$ state.go(sidebar.overall)更改页面; 但它有两次登录的chage页面,第二次登录刷新页面。 首次登录是服务器成功,并获得成功响应。

我的login.js如下:

if($scope.loginForm.$valid) {
            var postData = {
                username : $scope.username,
                password : $scope.loginForm.password.$modelValue,
                smsCode : $scope.messageCode
            };
            $scope.method = "post";
            $scope.url = BASE_URL + "/user/login/users";
            $http({
                method:$scope.method,
                url: $scope.url,
                data : postData,
                headers : {
                    "Content-Type": 'application/json'
                }
            }).then( function (response, event) {
                console.log(response);
                event.preventDefault();
                $state.go("sidebar.overall");
                if(response.data.success == true){
                    $cookieStore.put("userMessage", response);
                    $state.go("sidebar.overall");

                    if($cookieStore.get('userMessage')){
                        $scope.uMessage = $cookieStore.get('userMessage');
                        $http({
                            method: 'GET',
                            url: BASE_URL + '/user/roles/privileges/parts/' + $scope.uMessage.data.data.user.roleId,
                            headers : {
                                "Content-Type": 'application/json'
                            }
                        }).then(function (res){
                            localStorage.setItem('permitInfo',JSON.stringify(res.data));
                        }, function(res){
                            console.log(res);
                        });
                    }

}

和app.js文件:

.config(['$stateProvider', '$urlRouterProvider', '$httpProvider', function ($stateProvider, $urlRouterProvider, $httpProvider){
    if (!$httpProvider.defaults.headers.get) {
        $httpProvider.defaults.headers.get = {};
    }
    $httpProvider.defaults.headers.common["X-Requested-With"] = 'XMLHttpRequest';
    $httpProvider.defaults.headers.get['Cache-Control'] = 'no-cache';
    $httpProvider.defaults.headers.get['Pragma'] = 'no-cache';

    $urlRouterProvider.otherwise( function($injector, $location) {
        var $state = $injector.get("$state");
        $state.go("loginlogout");
    });
}]).controller('RootController', ['$rootScope', '$scope', $timeout','$location', '$state', '$cookieStore', 'locals', function($rootScope, $scope, $timeout, $location, $state, $cookieStore, locals){
 if($cookieStore.get('userMessage')){
    $rootScope.userMessage = $cookieStore.get('userMessage');     
    console.log($rootScope.userMessage);
 } else {
    $state.go('loginlogout');
 }
 $rootScope.permitInfo = JSON.parse(localStorage.getItem('permitInfo'));   
    $scope.$on('$locationChangeStart',function(evt, next, previous) {
        angular.element('#loading').modal('show');
    });       
    $scope.$on('$locationChangeSuccess',function(evt, next, previous) {
        angular.element('#loading').modal('hide');
        angular.element(".modal").modal("hide");
    });        
    $scope.$on('$stateChangeSuccess',function(evt, next, previous) {
        angular.element('#loading').modal('hide');
        angular.element(".modal").modal("hide");
    });        
    $scope.$on('$viewContentLoaded',function(evt, next, previous) {
        angular.element('input').attr("autocomplete", "off");       
        window.scrollTo(0,0);                                          
        angular.element(".modal-backdrop").hide();                
    });


angular.module('frontierApp.loginlogout', ['ui.router', 'ngCookies'])
.config(['$stateProvider', function($stateProvider){
    $stateProvider
        .state('loginlogout',{
            url : '/login',
            templateUrl: 'modules/loginlogout/login_view.html',
            controller: 'LoginController'
        })
}])

感谢您的帮助。

0 个答案:

没有答案