通过深度索引访问数组元素

时间:2015-11-18 19:32:01

标签: javascript arrays angularjs

我无法访问元素,它位于资源树的最后一片叶子上。我无法通过迭代器迭代元素。我想得到$ scope.values数组中每个值的type.id.他们都有一个type.id属性。

有问题的罪犯:

for (var i=0; i < $scope.values.length; i++) {
    Type.getType({id:$scope.values[i].type.id}, function (results) {
         $scope.values[i].type = results;
         return results;
    });
}

给出:     TypeError:无法设置未定义的属性“type”

错误的行和行将光标放到:$ scope.values [i] .type = results;但是我可以将结果记录得很好,它的资源数组中包含2个项目。

如果我在两个地方更改它们,那么另外两种访问元素的标准方法也可以正常工作。

$scope.values[0]

$scope.values["0"]

我在这里缺少什么?

1 个答案:

答案 0 :(得分:1)

你不知道Type.getType做了什么,所以我不知道你作为第二个参数应用的函数何时被调用,也许它是一个回调?但我很确定,当调用此函数时,i的值不是您想要的值。这不是一个闭包,我似乎在全球范围内。

你可以这样试试:

for (var i=0; i < $scope.values.length; i++) {
    Type.getType({id:$scope.values[i].type.id}, function (results) {        
          var index = i;
         $scope.values[index].type = results;
         return results;
    });
}