我已经建立了一个客户端购物车,但是现在我遇到了一个非常棘手的问题,我不知道该怎么做。我的购物车有限制,你不能同时从两个不同的供应商或活动购买门票。现在,如果你试图这样做,那么"应该"碰巧是购物车应清除购物车中的先前数据并添加新数据。
这是我清除购物车的功能:
$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以查看是否可行但仍然可以不行。
答案 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)
删除对象的引用以创建对象的新副本。