javascript - 范围问题 : Array is not passed into promise resolution

标签 javascript angularjs scope

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

相关文章:

javascript - ToggleMenu 删除和添加类

html - Angular 中的变量作用域

javascript - Onsen-UI:如何更新屏幕页面属性并重新加载 View ?

javascript - 在 if 语句中设置变量 - JQuery

javascript - C# & JS 加密方式返回不同的结果

javascript - 如何在函数内部调用函数?

JavaScript 正则表达式由连字符和空格分隔

javascript - md-virtual-repeater 使用 body 作为容器

perl - 嵌套的while循环似乎没有适本地保留变量

C++ 类变量作用域