尝试在Angular.js或JavaScript中连接两个函数返回

时间:2016-04-15 04:46:41

标签: javascript angularjs

我有以下Angular控制器。我想从xy变量中获取项目并在网页上显示它们。目前,该网页仅显示y变量中的项目。我尝试使用.push()将两个函数结果集放在一起PremByClass数组中。任何帮助或指导如何做到这一点将不胜感激。

app.controller('PremByClass', ['$scope', '$http', 'policyApi', 'lookupApi', function ($scope, $http, policyApi, lookupApi) {
    $scope.model = {};
    $scope.load.then(function () {
        function formatDate(value) {
            return value.getMonth() + 1 + "-" + value.getDate() + "-" + value.getFullYear();
        }
        $scope.PremByClass = [];
        policyApi.policy.get().then(function (t) {
            if (t) {
                policyApi.class.get().then(function (x) {
                    if (x) {
                        //Put x into $scope.PremByClass
                        $scope.PremByClass.push(x);
                        var dtEff = formatDate(t.DateEffective);
                        for (var i = 0, e = null; e = x[i]; i++) {
                            lookupApi.WCClassDesc.get(e.GovState, e.classCode, e.DescCode, dtEff).then(function (y) {
                                //This seems to wrok correctly however it seems that $scope.PremByClass forgets about x
                                //The web page only shows stuff from y
                                $scope.PremByClass.push(y);
                            })
                        }
                    }
                })
            }
        })
    });
}]);

1 个答案:

答案 0 :(得分:0)

由于您的 x 变量似乎是一个数组,我猜您应该在页面中将其显示为对象的列表或表格,如下所示:

<ul>
  <li ng-repeat="item in PremByClass[0]">
    {{item.GovState}} // {{item.classCode}}
  </li>
</ul>

我在PremByClass上使用了索引0,因为你的 x 变量是你推入PremByClass数组的第一个项目。虽然,我会通过将 x 变量设置为更有意义的范围属性来使代码的这一部分更易于维护。

您可以在控制器中替换此行:

$scope.PremByClass.push(x);

这一行:

$scope.policies = x;

然后只需重写ng-repeat块以使用政策

<ul>
  <li ng-repeat="item in policies">
    {{item.GovState}} // {{item.classCode}}
  </li>
</ul>

变量/数组PremByClass将仅包含来自 lookupApi.WCClassDesc 服务或工厂的结果,您应该能够使用与上述相同的ng-repeat代码在屏幕上呈现它们,只需替换< strong>政策, PremByClass