【问题标题】: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

但是解析器函数不返回任何东西。知道我做错了什么吗?为什么解析器函数不返回任何东西?

【问题讨论】:

    标签: angularjs angular-ui-router


    【解决方案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 服务获取的数据
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-27
    • 1970-01-01
    • 1970-01-01
    • 2017-01-29
    • 1970-01-01
    • 2021-12-22
    相关资源
    最近更新 更多