Проблемы с использованием данных от службы к контроллеру

У меня есть сервис и несколько контроллеров.
Служба делает запрос post, и контроллеры предполагают использовать данные, отправленные с сервера.
К сожалению, RightsMainService.rightsArray возвращает массив с объектами, и каждый объект имеет только «неопределенные» поля.
Более того, RightsMainService.init всегда ложен.
Не уверен,где проблема.



    app.service('RightsMainService', ['$http', '$rootScope', '$state',  function($http, $rootScope, $state) {

    var self = this;

    this.rightsArray = [];

    this.init = false;

    this.loadRights = function(rightsObject) {
        var config = {
            headers : {
                'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8;'
            }
        };
        $http.post('./server/user.php', $.param(rightsObject), config)
            .success(function(data,status, headers, config) {
                self.rightsArray = data;
                self.init = true;
                $rootScope.$broadcast('finishLoadingEvent');
            })
            .error(function(data, status, header, config) {
                alert(status + " " + header);
                return;
            });
        $state.go('rights');
    }
}]);



    app.controller('RightsMainCtrl', ['$scope', '$rootScope', 'RightsMainService', function($scope, $rootScope, RightsMainService) {
    var rightsArrayInitialized = false;
    var rightsArray = [];
    (function Initialize(){
        if(RightsMainService.init == false) {
            alert("init");
            $rootScope.$on('finishLoadingEvent', function() {
                rightsArrayInitialized = true;
                rightsArray = RightsMainService.rightsArray;
                for(var key in rightsArray[0]) {
                    alert(rightsArray[key]);
                }
            })
        } else {
            rightsArrayInitialized = true;
            rightsArray = RightsMainService.rightsArray;
            for(var key in rightsArray[0]) {
                alert(rightsArray[key]);
            }
        }
    })();
}]);

Пожалуйста, игнорируйте предупреждения, они там для целей тестирования

1 ответ

  1. Вы звоните $state.go('rights');до $httpзавершения. Весь процесс потока на самом деле не имеет смысла.