当我尝试将数据分配给新数组时,我遇到了丢失数组中数据的问题 我使用的对象如下:
$scope.shops = [
{
name: "Kroger",
items: [ { itemName: "Chips"} ]
}
];
这是我正在使用的函数的代码,它可能是一个回调问题?或者其他的东西?我丢失了商店的商品信息。
$scope.addItem = function(newItem, newShop){
var x = findShop(newShop);
x.items.push(newItem);
$scope.shops.push(x);
};
findShop = function(shopTag){
var old = angular.copy($scope.shops);
var tar = {
name: shopTag,
items: []
};
$scope.shops = [];
angular.forEach(old, function(shop, key){
if(shop.name === shopTag) {
tar.items = angular.copy(shop.items);
}
else {
$scope.shops.push(shop);
}
});
return tar;
};
目标是让findShop函数返回一个具有正确名称的商店,如果以前没有商店则返回空白商品,或者如果商店已经创建商品,则返回商品。然后addItem将项目推送到shop.items数组并将商店推入$ scope 非常感谢任何帮助!!!
答案 0 :(得分:1)
你是对的,正是这条线造成了问题,
tar.items = shop.items;
尝试使用它,
tar.items = angular.copy(shop.items);
答案 1 :(得分:1)
var old = $scope.shops; // old and $scope.shops point to the same place
..........
$scope.shops = []; // you assigned a new array that overrides the data
............
angular.forEach(old, function(shop, key){ // for each on an empty array????
如果您不想指向相同的参考用途:
var copiedObject = angular.copy(objToCopy);
答案 2 :(得分:0)
我想即使在循环之前,数组也变空了。 Var old是对商店数组的引用,你在foreach之前将它变为空。有效地使旧的空...