我正在尝试使用ngCookies使用AngularJS构建购物车服务。
我可以在购物车中成功添加商品,但是如果购物车中已存在该商品,我希望addItem
方法增加数量,而不是将新的item
推送到{{1对象。
如何从items
方法中获取正在添加的项目的index
?我是否正确接近这个或者我应该将项目索引设置为addItems
来解决此问题吗?
item.id
答案 0 :(得分:0)
我已经解决了以下问题:我愿意接受更好的建议 -
addItem : function(item, quantity) {
// If cookie not defined, then put an empty array
if (! ($cookieStore.get(this.itemsCookie) instanceof Array)) {
$cookieStore.put(this.itemsCookie, []);
}
if (quantity === undefined) {
quantity = 1;
}
var items = $cookieStore.get(this.itemsCookie);
var exists = -1;
angular.forEach(items, function(obj, key) {
if (obj.id == item.id)
{
exists = key;
}
});
// Because array index 0 will be defined as false
if (exists >= -1) {
items[exists].quantity += quantity;
}
else {
items.push({
id : item.id,
quantity : quantity,
price : item.price,
name : item.name,
thumb : item.thumb
});
}
$cookieStore.put(this.itemsCookie, items);
},