AngularJS - 工厂中的promise ID字段的返回值

时间:2016-05-05 22:21:00

标签: javascript ionic-framework promise

我正在恢复allEnquetes中的所有数据。我只是找到了请求的列表,但是因为allEnquetes返回一个promise而发生错误。

.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 )

1 个答案:

答案 0 :(得分:0)

allEnquetes返回一个promise,因此你无法循环。检查以下代码。我没有测试过。但是这应该让你对如何做到这一点有所了解。

array_merge

这就是您应该如何使用您的服务。

.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;  
      }
  };

});