小程序购物车的逻辑,写的一个假数据

//Page Object 小程序的购物车逻辑
Page({
data: {
cartItems: [],
hasList: false,//列表是否有数据
total: 0,
checkAll: true//默认是全选状态
},
//options(Object)
onLoad: function (options) {

},
onShow: function () {
this.setData({
hasList: true,//假装有数据
cartItems: [
{ id: 1, title: “苹果”, image: “/assets/apple.jpg”, count: 4, price: 4, selected: true },
{ id: 2, title: “香蕉”, image: “/assets/banana.jpg”, count: 5, price: 2, selected: true }

  ]
})

},

add: function (e) {
var cartItems = this.data.cartItems;
console.log(cartItems, 777);

var index = e.currentTarget.dataset.index;//拿到当前点击的对象的索引值
var count = cartItems[index].count;
console.log(count, 999);
count++;

this.data.cartItems[index].count = count;
this.setData({
  cartItems: cartItems
})

},
reduce: function (e) {
var cartItems = this.data.cartItems;
var index = e.currentTarget.dataset.index;
var count = cartItems[index].count;
if (count === 1) {
cartItems[index].count = 1
} else {
count–;
cartItems[index].count = count;//假如count=5,count–就是4,把这个4再赋值给当前index的car对象里

}
this.data.cartItems.count = count;

this.setData({
  cartItems: cartItems
})

},
//选择 是否全选
select: function (e) {
var checkAll = this.data.checkAll;
checkAll = !checkAll;//保留最开始的状态存起来, 然后点击其实就是去反值
var cartItems = this.data.cartItems;
for (var i = 0; i < cartItems.length; i++) {
// 选择就是全选或者全不选 所以状态会和checkAll保持一致
cartItems[i].selected = checkAll
}
//状态保持一致后,存到当前的data里去,然后再去调用求和
this.setData({
checkAll: checkAll,
cartItems: cartItems
})
this.getsumTotal()

},
//删除
del: function (e) {
var index = e.currentTarget.dataset.index;
var cartItems = this.data.cartItems;
//删除一个
cartItems.splice(index, 1);
//删除数据后就保存数据
this.setData({
cartItems: cartItems

})
if (!cartItems.length) {//如果购物车为空
  hasList: false;
} else {
  cartItems.splice(index, 1);
  this.getsumTotal();
}

},
//清空购物车
go: function () {
this.setData({
cartItems:[]
})
},

//是否选中
selectedCart: function (e) {
console.log(e, 999);
var index = e.currentTarget.dataset.index;
var cartItems = this.data.cartItems;
var selected = cartItems[index].selected;
//这是个死数据的呢, 拿到这个数据去取反,和全选类似的
this.data.cartItems[index].selected = !selected;
this.setData({

  cartItems: cartItems
})
this.getsumTotal()

},
//总价
getsumTotal: function (e) {
var sum = 0;
for (var i = 0; i < this.data.cartItems.length; i++) {
if (this.data.cartItems[i].selected) {
sum += this.data.cartItems[i].count * this.data.cartItems[i].price
}
}
this.setData({
total: sum
})
}

});

猜你喜欢

转载自blog.csdn.net/qq_43653325/article/details/85335454