wxml:
<view class="container"> <block wx:for="{{carts}}" wx:key="key"> <view class='carts'> <text class='name'>{{item.title}}</text> <view class='subadd'> <text class='sub' data-index="{{index}}" bindtap='sub'>-</text> <text class='num'>{{item.num}}</text> <text class='add' data-index="{{index}}" bindtap='add'>+</text> </view> <text class='deleted' bindtap="deleteList" data-index="{{index}}">X</text> </view> </block> <view>总价:{{totalPrice}}</view> </view>
js文件设置一些初始值,模拟从服务器上获取的值,以便进行操作
data: { carts:[ { id:1, title:"新鲜芹菜 半斤1", num:0, price:1, selected:false }, { id: 2, title: "新鲜芹菜 半斤2", num: 0, price: 1, selected: false }, { id: 3, title: "新鲜芹菜 半斤3", num: 0, price: 1, selected: false }, { id: 4, title: "新鲜芹菜 半斤4", num: 0, price: 1, selected: false }, { id: 5, title: "新鲜芹菜 半斤5", num: 0, price: 1, selected: false }, ], text:"nihao", selectAllStatus:false, totalPrice:0 },
商品数量之间的加减操作
sub(e){ const index = e.currentTarget.dataset.index; let carts = this.data.carts; let num = carts[index].num; if(num<=0){ return false; } num = num - 1; carts[index].num = num; this.setData({ carts:carts }) this.getTotalPrice() }, add(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() },
计算所有商品的总价格
getTotalPrice(e){ let carts = this.data.carts; let sum = 0; for(let i=0;i<carts.length;i++){ sum += carts[i].num*carts[i].price; } this.setData({ totalPrice:sum.toFixed(2), carts:carts }) },
各个商品的删除操作
deleteList(e){ const index = e.currentTarget.dataset.index; let carts = this.data.carts; carts.splice(index,1);//splice(2,0)=>添加 splice(2,1)=>删除 splice(2,1,"Toll")=>将下标为2的值修改为Toll this.setData({ carts:carts }) },
购物车中全选与全不选功能
selectAll(e){
//设置selectAllStatus的状态,来进行判断选中与不选中之间的差别 let carts = this.data.carts; let selectAllStatus = this.data.selectAllStatus; selectAllStatus = !selectAllStatus; for(let i=0;i<carts.length;i++){ carts[i].selected = selectAllStatus } this.setData({ selectAllStatus:selectAllStatus, carts:carts }) }