解析器函数不返回任何

解析器函数不返回任何

问题描述:

在我的解析函数我有循环调用HTTP服务中的每个itaration:解析器函数不返回任何

function detailedReportDataResolver($stateParams, reportService) { 
    var promises = []; 
    var frequenciesArr = $stateParams.frequencies.split(',').map(function (item) { return parseInt(item, 10); }); 

    angular.forEach(frequenciesArr, function (freq, key) { 
     reportService.getDetailsReport($stateParams.clientId, $stateParams.date, freq).then(function (result) { 
      promises.push(result.data); 
     }); 
    }); 
    return $q.all(promises);   
} 

在这里,我怎么称呼解析器功能我的模块中:

resolve: { 
    detailedReportData: ["$stateParams", "reportService", detailedReportDataResolver] 
     } 

这里是服务:

(function() { 
    "use strict"; 

    angular.module("reportBuilder").factory("reportService", ["$http", "config", reportService]); 

    function reportService($http, config) { 
     var serviceUrl = config.baseUrl + "api/Reports/"; 
     var service = { 
      getDetailsReport: detailsReport 
     }; 

     return service; 


     function detailsReport(clientId, date, frequencies) { 

      if (!date && !clientId) return null; 
      return $http.get(serviceUrl + "ReportDetailed/" + clientId + "/" + date + "/" + frequencies); 
     } 

    } 
})(); 

我需要等待HTTP服务完成,然后开始下一个迭代循环和t他返回结果。为此,我在上面的解析程序中使用了$q.all

但是解析器函数不会返回任何东西。任何想法我做错了什么?为什么解析器函数不返回任何东西?

承诺数组的构成不正确。你可以试试:

function detailedReportDataResolver($stateParams, reportService) { 
    var promises = []; 
    var frequenciesArr = $stateParams.frequencies.split(',').map(function (item) { return parseInt(item, 10); }); 

    angular.forEach(frequenciesArr, function (freq, key) { 
     var promise = reportService.getDetailsReport($stateParams.clientId, $stateParams.date, freq).then(function (result) { 
      return result.data; 
     }); 
     promises.push(promise); 
    }); 
    return $q.all(promises);   
} 
+0

谢谢我tryed你的方式,但仍是功能不被方式,通过HTTP servicve – Michael

+0

fatched返回的数据我没有得到任何错误 – Michael