解析器函数不返回任何内容
Posted
技术标签:
【中文标题】解析器函数不返回任何内容【英文标题】:Resolver function doesn't return anything 【发布时间】:2016-07-24 09:09:43 【问题描述】:在我的解析器函数中,我有在每次迭代中调用 http 服务的循环:
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 服务完成。为此,我在上面的解析器函数中使用了$q.all
。
但是解析器函数不返回任何东西。知道我做错了什么吗?为什么解析器函数不返回任何东西?
【问题讨论】:
【参考方案1】:promise 数组的组成不正确。你可以试试:
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);
【讨论】:
谢谢我尝试了你的方法,但该函数仍然没有返回由 http 服务获取的数据以上是关于解析器函数不返回任何内容的主要内容,如果未能解决你的问题,请参考以下文章
解析模板 [] 时出错,模板可能不存在或可能无法被任何已配置的模板解析器访问