无法清除服务中的数据

时间:2015-10-18 17:32:50

标签: angularjs

我在我的应用程序中创建了一个客户端购物车,我有一个处理购物车功能的控制器和一个注入该控制器的服务。

在页面加载时,我从 localStorage 中获取购物车的内容并存储/准备使用:

CartService.js

var CartService = {};
var newCart = {
    info: {},
    tickets: [],
    customer: {},
    extras: []
};

// Load Cart Data
CartService.load = function() {
    CartService.cart = JSON.parse($window.localStorage.getItem('cart')) || newCart;
}

var init = function() {
    CartService.load();
}

init();

return CartService;

现在我的购物车上有一个按钮,允许用户从购物车中清除所有数据

<a class="pull-left" ng-click="clearCart()" alt="clear" title="Clear Cart?">
  <span class="badge btn-default" style="font-weight:500 !important;color: #666 !important;">
    <span class="fa fa-trash-o"></span> Clear
  </span>
</a>

这是在我的控制器中处理它的函数:

$scope.clearCart = function() {

    if (confirm('Are you sure?'))
    {
        $scope.cart = newCart;
        // Clearing The Carts
        CartService.clear();

        // Redirect Page
        $state.go('website.tickets.events.categories');

    }

};

现在这是我的问题;当页面加载第一次时,这样可以在 CartService.cart localStorage 中清除购物车,但是无论如何之后清除购物车失败,它会从localStorage清除,但由于某种原因,我无法清除CartService.cart 。我知道这一点,因为当我运行 console.log(CartService.cart)时,我总是看到数据。

但是,如果我刷新页面并尝试再次单击该按钮,这次会有效,我对此感到困惑。

1 个答案:

答案 0 :(得分:0)

也许$ window.localStorage目前没有使用“真正的”localStorage你可以使用这项服务https://github.com/gsklee/ngStorage它比直接使用它好很多