微信小程序实现单选、全选、反选、取消全选功能

实现效果

在这里插入图片描述

源代码
<!-- 循环单选 -->
	<view
	  class="parkNotice-email"
	  v-for="(item2, index2) in dataList2"
	  :key="index2"
	  @click="checkChange(index2)"
	>
	  <view class="img">
	    <image
	      :src="
	        item2.check
	          ? localImg.park.checkIcon
	          : localImg.park.uncheckedIcon
	      "
	    ></image>
	  </view>
	  <view class="title">
	    {{ item2.fileName + "." + item2.fileFormat }}
	  </view>
	</view>
<!-- 全选 -->
	<view class="selected">
	  <span class="image">
	    <view @click="allSelected(index)">
	      <image
	        :src="
	          allChecked
	            ? localImg.park.checkIcon
	            : localImg.park.uncheckedIcon
	        "
	      ></image>
	    </view>
	  </span>
	  <view class="title">全选</view>
	</view>
 allChecked: true, //全选,true为勾选状态,false为未勾选状态

//获取装修指南数据
  getDecorateList() {
    // this.isLoad2 = true;
    //businessType:4 装修指南
    getDecorateGuide({ businessType: 4, current: 1, rowCount: 10 })
      .then((res) => {
        let data = res.data.rows;
        data.forEach((value) => {
          this.dataList2.push({
            check: true, //true为勾选状态,false为未勾选状态
            fileName: value.fileName,
            fileFormat: value.fileFormat,
            id: value.id,
          });
        });
        this.isLoad2 = false;
      })
      .catch((error) => {
        console.log(error);
      });
  },
    
  //单选
    checkChange(index) {
      this.dataList2[index].check = !this.dataList2[index].check;
      //当勾选全选后,取消一个单选,全选则消失(这段的逻辑我之前有错误)
     //不是比较全部单选勾选的长度,而是判断所有的单选是否都勾选为true
      for (var i = 0, length = this.dataList2.length; i < length; i++) {
        if (this.dataList2[i].check == false) {
          this.allChecked = false;
          return;
        }
      }
      this.allChecked = true;
    },
    
    //全选
    allSelected() {
    //勾选全选,则所有的单选都勾选
      if (this.allChecked == true) {
        this.dataList2.forEach((value) => {
          value.check = false;
        });
      } else {
        this.dataList2.forEach((value) => {
          value.check = true;
        });
      }
      this.allChecked = !this.allChecked;
    },

错误代码展示回顾

//单选
 checkChange(index) {
 for (var i = 0; i < this.dataList2.length; i++) {
     if (this.dataList2[i].check == true) {
          this.allChecked == true;
        } else {
           this.allChecked == false;
        }
   }
 }
  • 0
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
微信小程序中可以通过使用组件来实现单选、多选和全选功能单选: 可以使用radio组件来实现单选功能。radio组件需要与radio-group组件配合使用。当用户点击其中一个radio后,radio-group会自动将其它的radio选项取消选中。 多选: 可以使用checkbox组件来实现多选功能。checkbox组件需要与checkbox-group组件配合使用。当用户点击某个checkbox时,checkbox-group会自动将其它的checkbox选项保持原有状态。 全选: 可以使用checkbox组件来实现全选功能。需要在checkbox组件中加入一个value属性,并将其绑定到全选按钮的checked属性上。当用户点击全选按钮时,将全选按钮的状态传递给所有的checkbox选项即可。 示例代码: 单选: ``` <radio-group> <label wx:for="{{list}}" wx:key="{{index}}"> <radio value="{{item.value}}">{{item.name}}</radio> </label> </radio-group> ``` 多选: ``` <checkbox-group> <label wx:for="{{list}}" wx:key="{{index}}"> <checkbox value="{{item.value}}">{{item.name}}</checkbox> </label> </checkbox-group> ``` 全选: ``` <checkbox value="all" checked="{{allChecked}}" bindchange="onAllChange">全选</checkbox> <checkbox-group> <label wx:for="{{list}}" wx:key="{{index}}"> <checkbox value="{{item.value}}" checked="{{item.checked}}">{{item.name}}</checkbox> </label> </checkbox-group> ``` 其中,allChecked和item.checked为数据中的属性,需要在js文件中定义和更新。onAllChange为全选按钮的change事件处理函数,代码如下: ``` onAllChange: function (e) { const isChecked = e.detail.value.length > 0; const list = this.data.list.map(item => { item.checked = isChecked; return item; }); this.setData({ allChecked: isChecked, list }); } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序媛夏天

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值