antd-vue checkbox全选与反选

 <div>
        <div style="border-bottom: 1px solid #E9E9E9;margin-bottom: 4px">
          <a-checkbox :indeterminate="indeterminate" name="checkAll" :checked="checkAll" @change="onCheckAllChange">
            全选
          </a-checkbox>
        </div>
        <a-checkbox-group v-model="checkedList" :options="levelData.data" @change="onChange"/>
      </div>
 checkedList: [], // 默认选中
      indeterminate: true,
      checkAll: false,
      plainOptions: [],
 onChange(checkedList) {
      console.log(191, checkedList);

      this.indeterminate = !!checkedList.length && checkedList.length < this.levelData.data.length;
      this.checkAll = checkedList.length === this.levelData.data.length;
    },
    onCheckAllChange(e) {
      Object.assign(this, {
        checkedList: e.target.checked ? this.levelData.data.map(item => item.value) : [],
        indeterminate: false,
        checkAll: e.target.checked,
      });
    },
要实现 antdvue2 中 Select 组件的全选功能,可以在 Select 组件中添加一个多框来控制全选状态,同时通过监听 Select 组件的 value 值的变化来实现中所有项或取消中所有项。 具体实现步骤如下: 1. 在 Select 组件上方添加一个 Checkbox 组件,用来控制全选状态。 2. 通过 Select 组件的 options 属性提供项列表。 3. 监听 Select 组件的 value 值的变化,当 value 值 options 中所有项的 value 值一致时,将 Checkbox 组件的中状态置为 true,否则置为 false。 4. 监听 Checkbox 组件的 onChange 事件,当 Checkbox 组件的中状态发生变化时,根据中状态修改 Select 组件的 value 值。 示例代码如下: ```vue <template> <div> <a-checkbox @change="handleCheckAllChange" :checked="isCheckAll">全选</a-checkbox> <a-select v-model="selectedValues" mode="multiple"> <a-select-option v-for="(option, index) in options" :key="index" :value="option.value"> {{ option.label }} </a-select-option> </a-select> </div> </template> <script> export default { data() { return { options: [ { label: 'Option 1', value: 'option-1' }, { label: 'Option 2', value: 'option-2' }, { label: 'Option 3', value: 'option-3' }, { label: 'Option 4', value: 'option-4' }, ], selectedValues: [], isCheckAll: false, }; }, watch: { selectedValues() { const allValues = this.options.map((option) => option.value); this.isCheckAll = this.selectedValues.length === allValues.length; }, }, methods: { handleCheckAllChange(checked) { const allValues = this.options.map((option) => option.value); if (checked) { this.selectedValues = allValues; } else { this.selectedValues = []; } }, }, }; </script> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值