2016-05-05 45 views
1

我正在恢復allEnquetes中的所有數據。我只是找到請求的這個列表,但發生錯誤是因爲allEnquetes返回一個承諾。AngularJS - 工廠中承諾ID字段的返回值

.factory('enquetesAPI', function($http,myConfig){ 

    return { 
     allEnquete: function(){ 
     return $http.get(myConfig.remote + '/lists.asp?acao=list-enquete&codadmin='+myConfig.codadmin); 

     }, 

     getEnquete: function(enqueteId) { 
     for (var i = 0; i < this.allEnquete().length; i++) {   
      if (this.allEnquete()[i].codigo === parseInt(enqueteId)) { 
      return this.allEnquete()[i]; 
      } 
     } 
     return this.allEnquete()  
     } 
    }; 

}) 

This is the result when I console.log (this.allEnquete)

回答

0

allEnquetes返回一個承諾,所以你只是無法通過這個循環。檢查下面的代碼。我沒有測試過它。但是這應該給你一些想法,你應該如何理想地做到這一點。

.factory('enquetesAPI', function($http, $q, myConfig){ 

    return { 
     allEnquete: function(){ 
     console.log('called'); 
     return $http.get(myConfig.remote + '/lists.asp?acao=list-enquete&codadmin='+myConfig.codadmin); 

     }, 

     getEnquete: function(enqueteId) { 
     var deferred = $q.defer(); 

     this.allEnquete().then(function(enquetes){ 
      var returnVal = enquetes; 
      for (var i = 0; i < enquetes.length; i++) { 
      if (this.allEnquete()[i].codigo === parseInt(enqueteId)){ 
       returnVal = enquetes[i]; 
      } 
      } 
      deferred.resolve(returnVal); 
     }, function(errorResponse){ 
      deferred.reject(errorResponse); 
     }); 

     return deferred.promise; 
     } 
    }; 

}); 

這就是你應該如何使用你的服務。

enquetesAPI.getEnquete(id).then(enquetes){ 
    // do whatever you need to do 
} 
+0

錯誤:TypeError:this.allEnquete不是函數 – alebarros

+0

對不起。這是未經測試的代碼。我做了更正。這應該現在工作。 – Ankit