小程序的全选,多选

先来展示一下效果

全选状态

取消全选

把表中所有的单选按钮选了之后

 

 在全选状态下取消了一个按钮

 <!-- 这个是每一项的选择按钮-->
<!-- data-index="{{index}}" 自定义属性 在js中通过单击事件中的形参e 你就可以获取到当前点击这一项的信息  形式就是data-XXX="{{XXX}}"-->
<view class="topBar"  data-index="{{index}}" catchtap="handleSelect">
 <image wx:if="{{item.select}}" src="../../assets/img/DeliveryService/selected.png" style="width: 46rpx;height: 46rpx; margin-top: 26rpx; margin-left: 20rpx;"></image>
<image wx:else src="../../assets/img/DeliveryService/unselect.png" style="width: 46rpx;height: 46rpx;  margin-top: 26rpx; margin-left: 20rpx;"></image>
</view>
              

 

<!-- 这个是全选按钮-->
<view class="twoImg" catchtap="handleSelectAll">
    <image  wx:if="{{selectAll}}" src="../../assets/img/DeliveryService/selected.png" style="width: 46rpx;height: 46rpx; margin-left:50rpx;"></image>
    <image  wx:else src="../../assets/img/DeliveryService/unselect.png" style="width: 46rpx;height: 46rpx;  margin-left:50rpx;"></image>
        <view class="SelectedAllText">全选</view>
</view>

 

 单选中有一个handleSelect 点击事件

多选中有一个handleSelectAll 点击事件

//data中得定义如下数据
data:{
    shopInfo:''//这个是你接口的数据把它用this.setData({  shopInfo=res.data})
    selectAll:false,
    totalCount:'',
    tempCount:1 //如果是0那么当你单个点击把列表中所有的都选中之后全选这个按钮还是不会起作用
}
handleSelect(e){
    console.log(e);
    console.log(e.currentTarget.dataset.index);
    const index=e.currentTarget.dataset.index
    const shopInfo=this.data.shopInfo;

    let totalCount=this.data.totalCount;

    // 获取全选状态
    let selectAll=this.data.selectAll
    let tempCount=this.data.tempCount
    // 判断购物车列表select属性是否都为true
    shopInfo.forEach(cart=>{
      if(cart.select){
        tempCount++;
      }
      if(shopInfo.length==tempCount){
        selectAll=true
      }
    })

    // 设置选中或者不选中的状态
    shopInfo[index].select=!shopInfo[index].select;

    // 判断
    if(shopInfo[index].select){
      totalCount++;
    }else{
      totalCount--;
      selectAll=false
    }
    this.setData({
      shopInfo:shopInfo,
      totalCount:totalCount,
      selectAll:selectAll
    })
  },
  // 全选
  handleSelectAll(e){
    console.log(e);
    let selectAll=this.data.selectAll;
    let shopInfo=this.data.shopInfo;
    let totalCount=0;
    selectAll=!selectAll;
    shopInfo.forEach(cart=>{
      cart.select=selectAll
      if(cart.select){
        totalCount++;
      }
      else{
        totalCount=0
      }
    })
    this.setData({
      shopInfo:shopInfo,
      selectAll:selectAll,
      totalCount:totalCount
    })
  },

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值