Angularjs angular JS$rootScope未在$http.get中定义

Angularjs angular JS$rootScope未在$http.get中定义,angularjs,undefined,Angularjs,Undefined,我想从$http.get检索数据并将其放入$rootScope: .run app.run(function ($rootScope, $q, $http, $timeout, stateRules) { stateRules .then(function (data) { $rootScope.user = data; console.log(data); }); }); 服务 app.service('stateRules'

我想从$http.get检索数据并将其放入$rootScope:

.run

app.run(function ($rootScope, $q, $http, $timeout, stateRules) {

    stateRules
    .then(function (data) {
        $rootScope.user = data;
        console.log(data);
    });   
});
服务

 app.service('stateRules', ['$http','$q', function($http, $q) {
    var userUrl= 'api/user/';
    var userService = {};
    var deferred = $q.defer();
    $http.get(userUrl+ "getUserName", { cache: true }).success(function (data) {
        deferred.resolve(data);
    });
    return deferred.promise;
});
.控制员

app.controller('userCtrl', ['$scope', function ( $scope) {
        console.log($scope.user);

}]);
但是控制器中$scope.user的值未定义。知道怎么修吗?
谢谢

$rootScope应该被注入到服务中。像这样

.service('ServiceGetSVC',['$http','$rootScope','$q',function($http,$rootScope,$q){..}

或者,如果您尝试在方法get之后使用$rootScope.user。由于方法get asynchronous,因此未定义$rootScope.user。应使用deferred

应用中

ServiceGetSVC.then(data){
  $rootScope.user = data;
}

service 
  .service('stateRules', ['$http','$q' function($http, $q) {
    var deferred = $q.defer();
    $http.get(communUrl + "getUserName", { cache: true }).success(function (data) {
        deferred.resolve(data);
    });
    return deferred.promise;
  }])

是否将其注入控制器?是的。当我使用$rootScope.user=“test”时,在控制器中$scope.user显示test。当我在$http.get中使用$rootScope.user时,$scope.user显示未定义。请注意,当我使用console.log(数据)时在$http.get中,我看到了数据您是否使用了像uglifyjs这样的混乱系统?如何声明变量app…我使用$window.sessionStorage.currentUser。麻烦少了!目标是让$rootScope.user在我的app.run中运行,这样我就可以在所有控制器中使用用户值。这不是喷油器的问题,而是$http.getI ad的问题d简单的解决方案。同样的问题!我还有未定义的问题。我用更多的代码更新了我的初始问题。我使用$window.sessionStorage。麻烦少了!