124 lines
2.8 KiB
JavaScript
124 lines
2.8 KiB
JavaScript
// page/component/new-pages/cart/cart.js
|
||
Page({
|
||
data: {
|
||
carts:[], // 购物车列表
|
||
hasList:false, // 列表是否有数据
|
||
totalPrice:0, // 总价,初始为0
|
||
selectAllStatus:true, // 全选状态,默认全选
|
||
obj:{
|
||
name:"hello"
|
||
}
|
||
},
|
||
onShow() {
|
||
this.setData({
|
||
hasList: true,
|
||
carts:[
|
||
// {id:1,title:'新鲜芹菜 半斤',image:'/image/s5.png',num:4,price:0.01,selected:true},
|
||
{id:2,title:'素米 500g',image:'/image/s6.png',num:1,price:0.03,selected:true}
|
||
]
|
||
});
|
||
this.getTotalPrice();
|
||
},
|
||
/**
|
||
* 当前商品选中事件
|
||
*/
|
||
selectList(e) {
|
||
const index = e.currentTarget.dataset.index;
|
||
let carts = this.data.carts;
|
||
const selected = carts[index].selected;
|
||
carts[index].selected = !selected;
|
||
this.setData({
|
||
carts: carts
|
||
});
|
||
this.getTotalPrice();
|
||
},
|
||
|
||
/**
|
||
* 删除购物车当前商品
|
||
*/
|
||
deleteList(e) {
|
||
const index = e.currentTarget.dataset.index;
|
||
let carts = this.data.carts;
|
||
carts.splice(index,1);
|
||
this.setData({
|
||
carts: carts
|
||
});
|
||
if(!carts.length){
|
||
this.setData({
|
||
hasList: false
|
||
});
|
||
}else{
|
||
this.getTotalPrice();
|
||
}
|
||
},
|
||
|
||
/**
|
||
* 购物车全选事件
|
||
*/
|
||
selectAll(e) {
|
||
let selectAllStatus = this.data.selectAllStatus;
|
||
selectAllStatus = !selectAllStatus;
|
||
let carts = this.data.carts;
|
||
|
||
for (let i = 0; i < carts.length; i++) {
|
||
carts[i].selected = selectAllStatus;
|
||
}
|
||
this.setData({
|
||
selectAllStatus: selectAllStatus,
|
||
carts: carts
|
||
});
|
||
this.getTotalPrice();
|
||
},
|
||
|
||
/**
|
||
* 绑定加数量事件
|
||
*/
|
||
addCount(e) {
|
||
const index = e.currentTarget.dataset.index;
|
||
let carts = this.data.carts;
|
||
let num = carts[index].num;
|
||
num = num + 1;
|
||
carts[index].num = num;
|
||
this.setData({
|
||
carts: carts
|
||
});
|
||
this.getTotalPrice();
|
||
},
|
||
|
||
/**
|
||
* 绑定减数量事件
|
||
*/
|
||
minusCount(e) {
|
||
const index = e.currentTarget.dataset.index;
|
||
const obj = e.currentTarget.dataset.obj;
|
||
let carts = this.data.carts;
|
||
let num = carts[index].num;
|
||
if(num <= 1){
|
||
return false;
|
||
}
|
||
num = num - 1;
|
||
carts[index].num = num;
|
||
this.setData({
|
||
carts: carts
|
||
});
|
||
this.getTotalPrice();
|
||
},
|
||
|
||
/**
|
||
* 计算总价
|
||
*/
|
||
getTotalPrice() {
|
||
let carts = this.data.carts; // 获取购物车列表
|
||
let total = 0;
|
||
for(let i = 0; i<carts.length; i++) { // 循环列表得到每个数据
|
||
if(carts[i].selected) { // 判断选中才会计算价格
|
||
total += carts[i].num * carts[i].price; // 所有价格加起来
|
||
}
|
||
}
|
||
this.setData({ // 最后赋值到data中渲染到页面
|
||
carts: carts,
|
||
totalPrice: total.toFixed(2)
|
||
});
|
||
}
|
||
|
||
}) |