0
我有一個服務和很少的控制器。
該服務發出發佈請求,並且控制器假定使用從服務器發回的數據。
不幸的是,RightsMainService.rightsArray返回一個包含對象的數組,每個對象只有「未定義」字段。
此外,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]);
}
}
})();
}]);
請忽略警報,他們在那裏用於測試目的
您需要知道'成功'功能發生了什麼,而且,如果它實際上是從服務器加載數據。我還會查看瀏覽器中的實際網絡請求/響應對,看它是否包含預期的內容。 – Stevo
嘿,它會加載正確的數據並正確發送廣播,我已經檢查了幾次。 我對服務中初始化變量的錯誤值感到迷惑,控制器總是認爲它是錯誤的。 –