vue3 实现全选/全不选功能

  • List item

vue3实现全选/全不选功能


实现逻辑就是全选按钮的选中与否依赖,所有的子复选框是否选中,
通过计算属性的 get()跟set()方法绑定 全选按钮的值.

<template>
  <div class="container">
    <input type="checkbox" v-model="checkAll"/>全选/不全选
    <p v-for="item,index in list" :key="index">
    <input type="checkbox" v-model="item.checked"/>{{ item.label}}
    </p>
  </div>
</template>
<script setup lang="ts">
import { computed, reactive, toRefs } from 'vue';
    let state = reactive({
        list:[{label:"张无忌",value:1,checked:false},{label:"张翠山",value:2,checked:false},{label:"张三丰",value:3,checked:false}],
    })

    let {list,checkList} = toRefs(state)
    //将checkAll定义成计算属性
    let checkAll = computed({
        get(){
           let flag = list.value.map((item)=>{
                if(item.checked == false){
                    return false
                }else{
                    return true
                }
                
            })
            return !flag.includes(false)
        },
    
        set(newVal){
            if(newVal){
                 list.value.map((value,_index,_array)=>{
                    value.checked = true
                })
            }else{
                list.value.map((value,_index,_array)=>{
                    value.checked = false
                })
            }
        }
    })

</script>

效果如下:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

别再NULL了

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

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

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

打赏作者

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

抵扣说明:

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

余额充值