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

我正在使用Angular构建基于邮政编码的得分检索服务,并且遇到了我不了解的范围问题。

我的API为馈给该函数的每个zipCode返回一个值,然后我尝试将其附加到Array。

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

cannot call method push() of undefined


这告诉我我的scoreArray没有进入promise解析的范围。

我如何才能使此函数富有成效,并在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;
        }

最佳答案

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

关于javascript - 范围问题:数组未传递到 promise 解析中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20753387/

10-09 06:11