AngularJs承诺forEach

时间:2016-02-04 13:01:46

标签: javascript angularjs angular-promise

我有从服务器获取数据的方法。 我在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 需要返回带有promise的函数(可以)。

此代码有效,但并非总是如此,有时我会捕获异常 $ 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它不是函数

1 个答案:

答案 0 :(得分:1)

当您已有值时,可以使用ng-if和绘制图形 例如:

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