范围问题:数组未传递到承诺解析

时间:2013-12-24 00:51:38

标签: javascript angularjs scope

编辑:我找到了解决方案。 Angular似乎没有推送到常规的javascript数组,但如果它是$ scope.array,它会按预期执行。任何关于这是否不是Angular方式的评论都表示赞赏。

我正在使用Angular来构建基于zipcodes检索分数的服务,而且我遇到了一个我不理解的范围问题。

我的API为每个输入到函数的zipCode返回一个值,然后我尝试将其附加到数组。

但是,下面的代码会引发错误:

cannot call method push() of undefined

这告诉我,我的scoreArray没有进入承诺解决范围。

如何使这个函数富有成效并在for循环完成运行后返回数组?

var $scope.scoreArray = [];
var zipArray = [10031,55325,83832];

function getScores(zipArray,scoreArray){
            for(i=0;i<zipArray.length;i++){
                Scoreboard.getScores(zipArray[i])
                .then(function(score){
                    $scope.scoreArray.push(score);
                })
            }   
            return scoreArray;
        }

1 个答案:

答案 0 :(得分:3)

array.push()返回新数组的长度。你每次都用int值覆盖它。