2016-07-24 52 views
0

在我的解析函數我有循環調用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

但是解析器函數不會返回任何東西。任何想法我做錯了什麼?爲什麼解析器函數不返回任何東西?

回答

0

承諾數組的構成不正確。你可以試試:

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