删除存储在本地存储和对象中的项目
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));
正在删除对象的引用以创建对象的新副本。
我已经构建了一个客户端购物车,但是现在我遇到了一个非常困难的问题,我不知道该怎么做。我的购物车有一个限制,即您不能同时从两个不同的供应商或活动购买门票。现在,如果您尝试这样做,"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));
正在删除对象的引用以创建对象的新副本。