我的产品对象看起来有点像这样:JSON.stringify()导致无限循环(编辑:NO为逻辑。)
{name: 'abc', description: 'def', price: 100, quantity: 1, comment: '', customizations: []}
的定制关键是具有其它这样的产品的阵列在它的对象。你可以忽略这个问题。正如你可能已经注意到,评论和定制键是使(理论上)相同产品(几乎)不同添加到购物车当钥匙。
我想做一个函数来将这些产品添加到名为cart_items []的数组中。如果选择(实际上)相同的产品,我只想增加cart_items [i]中的数量,否则添加一个新对象。
这是我的函数:
$scope.add_to_cart = function(product) {
// if the cart is empty, skip the brouhaha
if ($scope.cart_items.length === 0) {
$scope.cart_items.push(angular.copy(product));
} else {
for (var i = 0; i < $scope.cart_items.length; i++) {
// copy the original quantity and set it to 1 for comparison
var qty = $scope.cart_items[i].quantity;
$scope.cart_items[i].quantity = 1;
if (JSON.stringify(product) === JSON.stringify($scope.cart_items[i])) {
$scope.cart_items[i].quantity = qty + 1;
} else {
$scope.cart_items[i].quantity = qty;
$scope.cart_items.push(angular.copy(product));
}
}
}
};
问题:一是产品成功地增加了。添加另一个会导致无限循环。我用if(1 === 1)
替换了if(JSON...)
,并且没有发生死循环。我不知道我哪里错了。任何帮助?
这听起来像你有你的产品对象循环引用,自定义阵列可能英寸 – James
另外''scope.cart_items [i] .quantity = qty;'在'else'中会改变每个产品的数量不匹配。之后的“推”也是错误的,它会一直在购物车中的每件商品添加一次产品。 – James
@James它用物品的数量初始化。 –