删除存储在本地存储和对象中的项目

Removing Item Stored in Local Storage and Object

我已经构建了一个客户端购物车,但是现在我遇到了一个非常困难的问题,我不知道该怎么做。我的购物车有一个限制,即您不能同时从两个不同的供应商或活动购买门票。现在,如果您尝试这样做,"should" 购物车应该清除购物车中以前的数据并添加新数据。

这是我清空购物车的函数:

$cart.clear = function() {

      // Clear cart data
      $cart.cart = newCart; // Does not work


      // Remove cart from storage
      delete $localStorage.cart; // Does not work
      // Recreate empty cart
      $localStorage.cart = $cart.cart; // Does not work

  }

以上代码仅在初始页面刷新后 ONCE 有效,此后任何尝试清除购物车的尝试均失败,数据为 NEVER 已删除。

我在这方面已经有一段时间了,现在我很困惑。这基本上就是我的购物车服务的样子:

.factory('$cart', function ($window, $localStorage) {

        var $cart = {};

        // Creating New Cart Object
        var newCart = {
            info: {},
            tickets: [],
            customer: {},
            extras: []
        };

        $cart.cart = newCart;

        $cart.load = function() {
            $cart.cart = $localStorage.cart || newCart;
        }


        $cart.update = function() {
            $localStorage.cart = $cart.cart;
        }

        $cart.clear = function() {
            ...
        }

        $cart.addTicket = function(params) {
            ...
        };

        $cart.removeTicket = function(index) {
            ...
        }

        $cart.removeExtra = function(index) {
            ...
        }

        var init = function() {
            $cart.load();
        }

        init();

        return $cart;


    })

我之前使用 $window.localStorage.setItem()$window.localStorage.removeItem 在我的购物车中添加和删除商品,当我注意到这个问题时我切换到 ngStorage 看看是否可行但是它还是不行。

只需在您的控制器中尝试这个。

$cart.cart =JSON.parse(JSON.stringify(newCart)); 

正在删除对象的引用以创建对象的新副本。