编辑:我找到了解决方案。 Angular 似乎没有推送到常规的 javascript 数组,但如果它是 $scope.array,它会按预期执行。欢迎任何关于这是否不是 Angular 方式的评论。
我正在使用 Angular 构建一个根据邮政编码检索分数的服务,但我遇到了一个我不明白的范围问题。
我的 API 为提供给函数的每个 zipCode 返回一个值,然后我尝试将其附加到数组中。
但是,下面的代码会引发错误:
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 - 范围问题 : Array is not passed into promise resolution,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20753387/