我在我的应用程序中创建了一个客户端购物车,我有一个处理购物车功能的控制器和一个注入该控制器的服务。
在页面加载时,我从 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)时,我总是看到数据。
但是,如果我刷新页面并尝试再次单击该按钮,这次会有效,我对此感到困惑。
答案 0 :(得分:0)
也许$ window.localStorage目前没有使用“真正的”localStorage你可以使用这项服务https://github.com/gsklee/ngStorage它比直接使用它好很多