使用从服务到控制器的数据的问题

Problems using data from Service to Controller


我有一个服务和几个控制器。
该服务发出 post 请求,控制器假设使用从服务器发回的数据。
不幸的是,RightsMainService.rightsArray returns 一个包含对象的数组,每个对象只有 "undefined" 个字段。
此外,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]);
            }
        }
    })();
}]);

请忽略这些警报,它们用于测试目的

您在 $http 完成之前调用 $state.go('rights');。整个流程真的没有意义。