解析器函数不返回任何
问题描述:
在我的解析函数我有循环调用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);
}
谢谢我tryed你的方式,但仍是功能不被方式,通过HTTP servicve – Michael
fatched返回的数据我没有得到任何错误 – Michael