我不认为这真的是一个 Angular 问题,尽管我在使用 Angular ng-repeat 指令时偶然发现了这个问题。
我正在尝试使用 Push 将 javascript 对象文字存储到数组中,以便我可以在 ng-repeat 中对其进行迭代。
例如:
$scope.items = [];
var item = {
name: "bob"
};
$scope.items.push(item);
item.name = "mary";
$scope.items.push(item);
此时,$scope.items[] 持有 Mary 名字的 2 个实例,而不是同时拥有 Bob 和 Mary。这是违反直觉的,因为我认为推送应该只是将下一个项目附加到数组的末尾。
我的真实代码(总结)如下所示:
$scope.items = [];
var item = {
name: "";
};
for (var i = 0; i < 10; i++) {
// I dynamically set the item.name to some value using retrieved values from server
item.name = someValueFromServer;
$scope.items.push(item);
}
因此,在 for 循环结束时,我没有获得 10 个不同的名称,而是获得了与最后检索到的名称相同的 10 个名称。
我不太清楚如何解决这个问题,也无法在网上找到任何内容。我对此还很陌生,所以可能我正在寻找错误的东西。
任何帮助都会很棒。非常感谢!
最佳答案
每次都会覆盖同一个对象。
for (var i = 0; i < 10; i++) {
var item = {
name: someValueFromServer;
};
$scope.items.push(item);
}
关于javascript - 将对象文字插入数组(重复本身..),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24317762/