vue+Element:checkbox的全选和反选

5 篇文章 0 订阅
2 篇文章 0 订阅
<el-radio-group v-model="selectRadio" @change="quickSelect">
  <el-radio :label="1">全选</el-radio>
  <el-radio :label="2">反选</el-radio>
</el-radio-group>

<el-checkbox-group v-model="selectedItems" @change="selectOption">
  <el-checkbox v-for="item in items" :label="item.value" :key="item.label">
    {{ item.label }}
  </el-checkbox>
</el-checkbox-group>

html中定义全选和反选选项,单选,选中值为selectRadio,选项变化时执行quickSelect方法,多选选项的选中值为selectedItems,选项变化时执行selectOption

selectOption() {
  if (this.selectedItems== this.items)
    this.selectRadio= 1
  else this.selectRadio= 0
},
quickSelect(value) {
  if (value == 1) {
    this.selectedItems= this.items.map(item => {
      return item.value
    })
  } else if (value == 2) {
    this.selectedItems= this.items.filter((item) => {
      return !this.selectedItems.includes(item.value)
    }).map(item => {
      return item.value
    })
  }
}

当多选选项选中值与选项相同,意味全部选中,满足全选条件,将快捷选项的全选勾选,同时,一旦出现选项变化,取消全选和反选的勾选,实现为selectOption
quickSelect全选时,将Items的所有的选项有条件地赋予selectedItems,因为Items是对象数组,而selectedItems是字符串或数值数组(由checkbox的label类型决定);
quickSelect反选时,selectedItemsItemsselectedItems的补集,注意还要处理对象数组和字符串或数值数组的转换问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值