angularJS 数组元素显示为未定义
angularJS array element shows as undefined
我正在调试用 angularjs 编写的 Web 应用程序,我可以看到该数组包含所有值,但是当我开始遍历这些项目并想在我的手表上查看每个项目的值时,它显示为未定义,但我可以看到数组和值。这可能是我设置计数器的方式?
这是 Chrome 中开发者工具中显示的内容:
当我 select data.[i].Name 在项目 0 上时,它说它是未定义的,但是正如你在右边看到的,数组包含值。
你能看出我的错误在哪里吗?
谢谢,
伊拉斯莫
已更新屏幕截图
首先,您正在迭代的 data
对象实际上包含另一个名为 data
的属性,因此您需要在循环开始时将其引用为 data.data
.
您还需要在函数回调中定义数组项,然后您可以在没有索引的情况下引用它i
:
angular.forEach(data.data, function(item) {
var b = {
Name: item.Name,
Email: item.Email
};
$scope.arr.push(b);
});
为了简洁起见,我将 i
省略,因为它与您的循环操作无关。您当然可以根据需要重新引入它。
通过将此参数添加到您的函数回调,您是在告诉迭代器,“当我遍历这个名为 data
的数组时,只需调用每个条目 item
。”这样您就不必维护计数器。对于更通用的示例,这两个循环产生相同的输出:
data = ['a', 'b', 'c'];
angular.forEach(['a', 'b', 'c'], function(item) {
console.log(item);
});
for(var i = 0; i < data.length; i++) {
console.log(data[i]);
}
您仍然可以从函数回调中获取循环的当前索引以及对象本身的句柄:
angular.forEach(data, function(item, index, obj) {
console.log("Item " + index + " of " + obj + " is " + item);
});
有关详细信息,请参阅 AngularJS API。
我正在调试用 angularjs 编写的 Web 应用程序,我可以看到该数组包含所有值,但是当我开始遍历这些项目并想在我的手表上查看每个项目的值时,它显示为未定义,但我可以看到数组和值。这可能是我设置计数器的方式?
这是 Chrome 中开发者工具中显示的内容:
当我 select data.[i].Name 在项目 0 上时,它说它是未定义的,但是正如你在右边看到的,数组包含值。
你能看出我的错误在哪里吗?
谢谢, 伊拉斯莫
已更新屏幕截图
首先,您正在迭代的 data
对象实际上包含另一个名为 data
的属性,因此您需要在循环开始时将其引用为 data.data
.
您还需要在函数回调中定义数组项,然后您可以在没有索引的情况下引用它i
:
angular.forEach(data.data, function(item) {
var b = {
Name: item.Name,
Email: item.Email
};
$scope.arr.push(b);
});
为了简洁起见,我将 i
省略,因为它与您的循环操作无关。您当然可以根据需要重新引入它。
通过将此参数添加到您的函数回调,您是在告诉迭代器,“当我遍历这个名为 data
的数组时,只需调用每个条目 item
。”这样您就不必维护计数器。对于更通用的示例,这两个循环产生相同的输出:
data = ['a', 'b', 'c'];
angular.forEach(['a', 'b', 'c'], function(item) {
console.log(item);
});
for(var i = 0; i < data.length; i++) {
console.log(data[i]);
}
您仍然可以从函数回调中获取循环的当前索引以及对象本身的句柄:
angular.forEach(data, function(item, index, obj) {
console.log("Item " + index + " of " + obj + " is " + item);
});
有关详细信息,请参阅 AngularJS API。