AngularJS购物车实施 - 添加/更新项目

时间:2014-06-27 11:23:27

标签: javascript angularjs session-cookies shopping-cart

我正在尝试使用ngCookies使用AngularJS构建购物车服务。

我可以在购物车中成功添加商品,但是如果购物车中已存在该商品,我希望addItem方法增加数量,而不是将新的item推送到{{1对象。

如何从items方法中获取正在添加的项目的index?我是否正确接近这个或者我应该将项目索引设置为addItems来解决此问题吗?

item.id

1 个答案:

答案 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);

    },