AntDeisgn中checkbox group的使用
<template> <!-- 弹窗类型选择 --> <div> <a-modal :visible="state.modalAttr.visible" title="规选类型" width="680px" @ok="showModal" @cancel="hideModal"> <a-checkbox v-model:checked="state.checkboxAttr.checkAll" :indeterminate="state.checkboxAttr.indeterminate" @change="onCheckAllChange" > <span style="color: white">全选</span> </a-checkbox> <a-checkbox-group v-model:value="state.checkboxAttr.checkedList"> <a-checkbox v-for="opt in state.categoryOpts" :value="opt.code" @change="onChange"> <span style="color: white">{{ opt.name }}</span> </a-checkbox> </a-checkbox-group> </a-modal> </div> </template> <script setup> import {defineComponent, ref, reactive, watch, defineExpose, defineEmits, toRaw, onBeforeUnmount, onMounted} from 'vue'; const state = reactive({ modalAttr: { visible: true, }, checkboxAttr: { indeterminate: true, checkedList: [], checkAll: false, }, categoryOpts: [{ name: '实有单位', code: 'SYDW', }, { name: '标准地址', code: 'JZW', }, { name: '实有房屋', code: 'SYFW' }, { name: '实有人口', code: 'SYRK' }, { name: '层户信息', code: 'CHJGXXB', }] }) const showModal = () => { console.log('state.checkboxAttr.checkedArr::: ', state.checkboxAttr.checkedList) return; state.modalAttr.visible = true; } const hideModal = () => { state.modalAttr.visible = false; } const onChange = (e, index) => {//单个选择 state.checkboxAttr.indeterminate = !!state.checkboxAttr.checkedList.length && state.checkboxAttr.checkedList.length < state.categoryOpts.length; state.checkboxAttr.checkAll = state.checkboxAttr.checkedList.length === state.categoryOpts.length; } const onCheckAllChange = (e, index) => {//选择全部的事件 if (e.target.checked) { state.checkboxAttr.indeterminate = false; state.checkboxAttr.checkedList = state.categoryOpts.map(item => { return item?.code; }) } else { state.checkboxAttr.indeterminate = false; state.checkboxAttr.checkedList = [] } } watch ( () => state.checkboxAttr.checkedList, val => { state.checkboxAttr.indeterminate = false; state.checkboxAttr.checkAll = state.checkboxAttr.checkedList.length === 5; console.log('state.checkboxAttr.checkedList:::: ', state.checkboxAttr.checkedList) }, ); </script> <style scoped lang="scss"> :deep(ant-modal-title) { color: white; } </style>
学而不思则罔,思而不学则殆!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律