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

时间:2016-05-22 18:34:17

标签: angularjs angular-services angular-controller


我有一个服务和几个控制器。
该服务发出一个发布请求,控制器假设使用从服务器发回的数据。
不幸的是,RightsMainService.rightsArray返回一个包含对象的数组,并且每个对象只有" undefined"领域。
而且,RightsMainService.init始终为false。 不确定问题出在哪里。

    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 个答案:

答案 0 :(得分:0)

您在$state.go('rights');完成之前致电$http。整个流程并没有多大意义。