el-checkbox实现全选反选

我们先来看看原生实现法

<template>
  <div style="padding: 20px;">
    <!-- 2.v-model 关联全选的选中状态 -->
    <input type="checkbox" v-model="isAll" class="pointer" id="selectAll" />
    <label for="selectAll" class="checkbox-label" style="margin-right: 20px;">全选</label>

    <input type="checkbox" class="pointer" id="notSelectAll" :checked="isInverted" @click.prevent="btn"/>
    <label for="notSelectAll" class="checkbox-label">反选</label>

    <ul>
      <li v-for="(obj, index) in arr" :key="index">
        <!-- 1.
以下是el-checkbox实现全选、多的代码示例: 1. 全选 ```html <template> <div> <el-checkbox v-model="checkAll" @change="handleCheckAllChange">{{ checkAll ? '取消全选' : '全选' }}</el-checkbox> <br> <br> <el-checkbox-group v-model="checkedCities"> <el-checkbox v-for="city in cityOptions" :label="city" :key="city">{{ city }}</el-checkbox> </el-checkbox-group> </div> </template> <script> export default { data() { return { cityOptions: ['北京', '上海', '广州', '深圳'], checkedCities: [], checkAll: false, isIndeterminate: false, checkInvert: false }; }, methods: { handleCheckAllChange(val) { this.checkedCities = val ? this.cityOptions : []; this.isIndeterminate = false; this.checkInvert = false; } } }; </script> ``` 2. ```html <template> <div> <el-checkbox v-model="checkInvert" @change="handleCheckInvertChange"></el-checkbox> <br> <br> <el-checkbox-group v-model="checkedCities"> <el-checkbox v-for="city in cityOptions" :label="city" :key="city">{{ city }}</el-checkbox> </el-checkbox-group> </div> </template> <script> export default { data() { return { cityOptions: ['北京', '上海', '广州', '深圳'], checkedCities: [], checkAll: false, isIndeterminate: false, checkInvert: false }; }, methods: { handleCheckInvertChange() { this.checkedCities = this.cityOptions.filter(city => !this.checkedCities.includes(city)); this.checkAll = this.checkedCities.length === this.cityOptions.length; this.isIndeterminate = this.checkedCities.length > 0 && this.checkedCities.length < this.cityOptions.length; } } }; </script> ``` 3. ```html <template> <div> <el-checkbox v-model="checkAll" @change="handleCheckAllChange">{{ checkAll ? '取消全选' : '全选' }}</el-checkbox> <el-checkbox v-model="checkInvert" @change="handleCheckInvertChange"></el-checkbox> <br> <br> <el-checkbox-group v-model="checkedCities" @change="handleCheckedCitiesChange"> <el-checkbox v-for="city in cityOptions" :label="city" :key="city">{{ city }}</el-checkbox> </el-checkbox-group> <br> <br> <div>已中 {{ checkedCities.length }} 项</div> <div v-if="isIndeterminate">已中 {{ checkedCities.length }} 项,共 {{ cityOptions.length }} 项</div> </div> </template> <script> export default { data() { return { cityOptions: ['北京', '上海', '广州', '深圳'], checkedCities: [], checkAll: false, isIndeterminate: false, checkInvert: false }; }, methods: { handleCheckAllChange(val) { this.checkedCities = val ? this.cityOptions : []; this.isIndeterminate = false; this.checkInvert = false; }, handleCheckInvertChange() { this.checkedCities = this.cityOptions.filter(city => !this.checkedCities.includes(city)); this.checkAll = this.checkedCities.length === this.cityOptions.length; this.isIndeterminate = this.checkedCities.length > 0 && this.checkedCities.length < this.cityOptions.length; }, handleCheckedCitiesChange(value) { let checkedCount = value.length; this.checkAll = checkedCount === this.cityOptions.length; this.isIndeterminate = checkedCount > 0 && checkedCount < this.cityOptions.length; this.checkInvert = false; } } }; </script> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小白小白从不日白

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

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

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

打赏作者

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

抵扣说明:

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

余额充值