AngularJs promise in forEach

AngularJs promise in forEach

本文关键字:forEach in promise AngularJs      更新时间:2023-09-26

我有从服务器获取数据的方法。我在foreach中使用它,之后需要将他绑定到$scope变量。喜欢这个:

var qualityMix = [];
var engagementMix = [];
angular.forEach(versions, function (versions) {
    qualityMix.push(qualityScoreByTimeWithAppVerPromise(versions.version));
    engagementMix.push(engagementByTimeWithAppVerPromise(versions.version));
});
$scope.qualityScoreByTimeMix = function () {
    return $timeout(function () {
        return $q.all(qualityMix).then(function (data) {
            return {series: data};
        });
    });
};
$scope.engagementTimeMix = function () {
    return $q.all(engagementMix).then(function (data) {
        return {series: data};
    });
};

qualityScoreByTimeWithAppVerPromise和engagementByTimeWithAppVerPromise它是从服务器获取数据的函数。然后$scope.engagementTimeMix$scope.qualityScoreByTimeMix 需要带有承诺的返回函数(没关系)。

这段代码有效,但并非总是如此,有时我发现异常 $scope.xxx 不是一个函数

我不知道如何解决它。请帮帮我。多谢!

UPD它是构建图表的代码。

<div class="section">
    <highchart id="mix_quality_score_by_time" type="area" data="qualityScoreByTimeMix"
               chart-style="qualityScoreMixChartStyle"></highchart>
</div>

我在其他页面中调用我的指令,如下所示:

<compare-versions id="compare_versions_panel" start-day="timeFilter.startDay()"></compare-versions>

$scope.xxx 不是函数我的意思是我在chrome控制台中捕获的消息是什么 $scope.engagementTimeMix 和 $scope.qualityScoreByTimeMix 它不是一个函数

当你

已经有值
时,你可以使用 ng-if 和绘制图形例:

<div class="section" ng-if="qualityScoreByTimeMix">
    <highchart id="mix_quality_score_by_time" type="area" data="qualityScoreByTimeMix" chart-style="qualityScoreMixChartStyle"></highchart>
</div>