我有一个服务和几个控制器。
该服务发出一个发布请求,控制器假设使用从服务器发回的数据。
不幸的是,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]);
}
}
})();
}]);
请忽略警报,它们用于测试目的
答案 0 :(得分:0)
您在$state.go('rights');
完成之前致电$http
。整个流程并没有多大意义。