2016-05-05 10 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