Angularjs服务在run()方法中不起作用

时间:2015-04-18 11:17:07

标签: angularjs angularjs-scope angular-services

我在我的角度应用程序中获得了一个简单的get和set服务,它存储来自$ http请求的数据,但由于某种原因,它似乎在angular的run()方法中不起作用。我不确定到底出了什么问题。

我的服务

app.factory('sessionService', function() {
    var user_info = {};

    return {
        set: function(value) {
            user_info = value;
        },
        get: function() {
            return user_info;
        }
    };
});

我的跑步方法

app.run(['$rootScope', '$location', 'Auth', 'sessionService',
    function($rootScope, $location, Auth, sessionService) {

        var routespermission = ['/dashboard', '/create']; //route that require login
        $rootScope.$on('$routeChangeStart', function() {
            if (routespermission.indexOf($location.path()) != -1) {
                Auth.check({
                    type: 'checkSession'
                }).success(function(data) {
                    if (data.status === false) {
                        $location.path('/user/login');
                    } else {
                        sessionService.set(data);
                    }
                });
            }
        });
    }
]);

尝试访问控制器中的数据

app.controller('dashboardCtrl', ['$scope', '$location', 'sessionService',
    function($scope, $location, sessionService) {

        $scope.user_info = sessionService.get();
        console.log($scope.user_info);

        $scope.create_review = function() {

        }

    }
]);

当我在控制台中记录服务时,它会返回一个空对象。我没有得到任何错误,所以不确定我哪里出错了

1 个答案:

答案 0 :(得分:0)

你应该在app.run中为'$ routeChangeStart'注入$ route依赖工作。

app.run(['$rootScope', '$location','$route', 'Auth', 'sessionService',
function($rootScope, $location,$route, Auth, sessionService) {

    var routespermission = ['/dashboard', '/create']; //route that require login
    $rootScope.$on('$routeChangeStart', function() {
        if (routespermission.indexOf($location.path()) != -1) {
            Auth.check({
                type: 'checkSession'
            }).success(function(data) {
                if (data.status === false) {
                    $location.path('/user/login');
                } else {
                    sessionService.set(data);
                }
            });
        }
    });
}

]);