2016-05-22 18 views
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]); 
      } 
     } 
    })(); 
}]); 

請忽略警報,他們在那裏用於測試目的

+0

您需要知道'成功'功能發生了什麼,而且,如果它實際上是從服務器加載數據。我還會查看瀏覽器中的實際網絡請求/響應對,看它是否包含預期的內容。 – Stevo

+0

嘿,它會加載正確的數據並正確發送廣播,我已經檢查了幾次。 我對服務中初始化變量的錯誤值感到迷惑,控制器總是認爲它是錯誤的。 –

回答

0

要調用$state.go('rights');$http完成之前。整個流程過程並不合理。

+0

沒有注意到$ state.go,它不應該在那裏O.o –

相關問題