编辑:我找到了解决方案。 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/