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

时间:2015-10-23 08:07:45

标签: angularjs local-storage cart

我已经建立了一个客户端购物车,但是现在我遇到了一个非常棘手的问题,我不知道该怎么做。我的购物车有限制,你不能同时从两个不同的供应商或活动购买门票。现在,如果你试图这样做,那么"应该"碰巧是购物车应清除购物车中的先前数据并添加新数据。

这是我清除购物车的功能:

$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 ,任何尝试在失败后清除购物车,数据从不删除。

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

.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以查看是否可行但仍然可以不行。

1 个答案:

答案 0 :(得分:1)

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

let defaultAction = UIAlertAction(title: "Clear message history", style: .Default, handler: { (action: UIAlertAction!) in
        print("Handle Ok logic here")
        // how to change this text color to red?
})

let image = UIImage(named: "myButtton.png")
defaultAction.setValue(image, forKey: "image")
alertController.addAction(defaultAction)

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

相关问题