微信 小程序组件 加入购物车全套 one js

// pages/shop/shop.js

Page({

/**

* 页面的初始数据

*/

data: {

carts: [

{ teaname: '冠军乌龙茶-150g', image: '../../imgs/car/shopping_pic_1.png', num: '1', price: '1200.00', sum: '1200.0', selected: true, cid: 1001, },

{ teaname: '18年老茶-150g', image: '../../imgs/car/shopping_pic_1.png', num: '1', price: '600.00', sum: '600.0', selected: true, cid: 1001, },

],

// 实现bindSelectAll事件,改变全选状态

selectedAllStatus: false,

total: '',

// 页面打开时的短暂加载数据初始化1

newload: '',

minusStatuses: "disabled",

//判断购物车是否为空时的页面

hasList: true

},

/**

* 生命周期函数--监听页面加载

*/

onLoad: function (options) {

this.sum();

// 页面打开时的短暂加载函数2

this.newload();

this.minusStatuses();

},

// -------------------------------------------------------------------------------

// 页面打开时的短暂加载函数3

newload: function () {

// wx.showModal({

// title: '提示',

// content: '这是一个模态弹窗',

// success: function (res) {

// if (res.confirm) {

// console.log('用户点击确定')

// } else if (res.cancel) {

// console.log('用户点击取消')

// }

// }

// })

wx.showLoading({

title: '加载中',

});

setTimeout(function () {

wx.hideLoading()

}, 1000);

// setTimeout(function () {

// this.setData({

// newload: 1,

// });

// this.data.newload=''

// }, 2000)

},

// -------------------------------------------------------------------------------

// setTimeout(function () {

// animation.translate(30).step()

// this.setData({

// animationData: animation.export()

// })

// }.bind(this), 5000)

// --------------------------------------------------------------------------------

// 减号被禁用时在初始化数据函数

minusStatuses:function(){

var minusStatuses=[];

var length = this.data.carts.length;

for (var i = 0; i < length;i++){

minusStatuses.push("disabled");

}

this.setData({

minusStatuses: minusStatuses

});

},

bindMinus: function (e) {

var index = parseInt(e.currentTarget.dataset.index);

var num = this.data.carts[index].num;

var sum = this.data.carts[index].sum;

var price = this.data.carts[index].price;

console.log(1);

// 如果只有1件了,就不允许再减了

if (num > 1) {

num--;

}

// 只有大于一件的时候,才能normal状态,否则disable状态

var minusStatus = (num <= 1 ? 'disabled' : 'normal');

// 购物车数据

var carts = this.data.carts;

carts[index].num = num;

carts[index].sum = (num * price).toFixed(1);

// 按钮可用状态

var minusStatuses = this.data.minusStatuses;

minusStatuses[index] = minusStatus;

// 将数值与状态写回

this.setData({

carts: carts,

minusStatuses: minusStatuses

});

this.sum();

},

bindPlus: function (e) {

var index = parseInt(e.currentTarget.dataset.index);

var num = this.data.carts[index].num;

var sum = this.data.carts[index].sum;

var price = this.data.carts[index].price;

// console.log(num);

// 自增

num++;

// 只有大于一件的时候,才能normal状态,否则disable状态

var minusStatus = (num <= 1) ? 'disabled' : 'normal';

// 购物车数据

var carts = this.data.carts;

carts[index].num = num;

carts[index].sum = (num * price).toFixed(1);

// 按钮可用状态

var minusStatuses = this.data.minusStatuses;

minusStatuses[index] = minusStatus;

// 将数值与状态写回

this.setData({

carts: carts,

minusStatuses: minusStatuses

});

this.sum();

},

bindManual:function(e){

// console.log(e.detail.value)

var cheValue = e.detail.value;

var index = parseInt(e.currentTarget.dataset.index);

var num = this.data.carts[index].num;

var sum = this.data.carts[index].sum;

var price = this.data.carts[index].price;

// console.log(num);

if (cheValue == '' || cheValue==0){

cheValue=1

}

// 只有大于一件的时候,才能normal状态,否则disable状态

var minusStatus = (cheValue <= 1) ? 'disabled' : 'normal';

// 购物车数据

var carts = this.data.carts;

carts[index].num = cheValue;

carts[index].sum = (cheValue * price).toFixed(1);

// 按钮可用状态

var minusStatuses = this.data.minusStatuses;

minusStatuses[index] = minusStatus;

// 将数值与状态写回

this.setData({

carts: carts,

minusStatuses: minusStatuses

});

this.sum();

},

// -----------------------------------------------------------------------------------------

// 单击复选框是否选中

bindCheckbox: function (e) {

/*绑定点击事件,将checkbox样式改变为选中与非选中*/

//拿到下标值,以在carts作遍历指示用

var index = parseInt(e.currentTarget.dataset.index);

//原始的icon状态

var selected = this.data.carts[index].selected;

var carts = this.data.carts;

// 对勾选状态取反

carts[index].selected = !selected;

// 写回经点击修改后的数组

this.setData({

carts: carts

});

this.sum();

},

// ---------------

// 全选复选框是否选中

bindSelectAll: function () {

// 环境中目前已选状态

var selectedAllStatus = this.data.selectedAllStatus;

// 取反操作

selectedAllStatus = !selectedAllStatus;

// 购物车数据,关键是处理selected值

var carts = this.data.carts;

// 遍历

for (var i = 0; i < carts.length; i++) {

carts[i].selected = selectedAllStatus;

}

this.setData({

selectedAllStatus: selectedAllStatus,

carts: carts

});

this.sum();

},

// -----------------------------------------------------------------------------------------

// 全选

bindCheckout: function () {

// 初始化toastStr字符串

var toastStr = 'cid:';

// 遍历取出已勾选的cid

for (var i = 0; i < this.data.carts.length; i++) {

if (this.data.carts[i].selected) {

toastStr += this.data.carts[i].cid;

toastStr += ' ';

}

}

//存回data

this.setData({

// toastHidden: false,

// toastStr: toastStr

});

},

bindToastChange: function () {

this.setData({

// toastHidden: true

});

},

// -----------------------------------------------------------------------------------------

// 计算总的金额

sum: function () {

var carts = this.data.carts;

// 计算总金额

var total = 0;

for (var i = 0; i < carts.length; i++) {

if (carts[i].selected) {

total += carts[i].num * carts[i].price;

}

}

total = total.toFixed(1);

// 写回经点击修改后的数组

this.setData({

carts: carts,

total: '¥' + total

});

},

// -----------------------------------------------------------

// 购物车删除

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 // 修改标识为false,显示购物车为空页面

});

} else { // 如果不为空

this.sum(); // 重新计算总价格

}

},

// ------------------------------------------------------------------

// 回tabar中的首页

tobackHome: function () {

wx.switchTab({

url: '/pages/index/index'

})

},

// -----------------------------------------------------------

/**

* 生命周期函数--监听页面初次渲染完成

*/

onReady: function () {

},

/**

* 生命周期函数--监听页面显示

*/

onShow: function () {

},

/**

* 生命周期函数--监听页面隐藏

*/

onHide: function () {

},

/**

* 生命周期函数--监听页面卸载

*/

onUnload: function () {

},

/**

* 页面相关事件处理函数--监听用户下拉动作

*/

onPullDownRefresh: function () {

},

/**

* 页面上拉触底事件的处理函数

*/

onReachBottom: function () {

},

/**

* 用户点击右上角分享

*/

onShareAppMessage: function () {

}

})