Vue实现动态复选框的全选 全不选 获取选中值

在开发中,动态复选框的功能还是比较常见的,下面是对此做简要的讲解

1、复选框的实现原理

 动态复选框主要是通过v-model来控制的,为true时选中,为false时取消选中。

2、 功能展示

选中“进行中”和“已完成”,然后点击“确定”按钮 

按F12,打开浏览器的控制台,可以看到输出了所选中选项的数组集合。

3、完整的实现代码

 全选:   遍历数组里的每一项,  让其checked属性取true。

全不选:遍历数组里的每一项,  让其checked属性取false。

<template>
  <div>
    <div>
      <div v-for="item in checkboxData" 
      :key="item.dictid" 
      style="font-size: 18px">
        <el-checkbox 
          v-model="item.checked" 
          :label="item.dictvalue" 
          :id="item.dictid" 
          :value="item.dictvalue">
        </el-checkbox>
      </div>
    </div>
    <div style="margin-top: 10px">
      <el-button @click="checkall" size="small">全选</el-button>
      <el-button @click="checkno" size="small">全不选</el-button>
      <el-button type="primary" @click="checkok" size="small">确定</el-button>
    </div>
  </div>
</template>

<script>
export default {
  name: 'test',
  data: function(){
    return {
      checkboxData: []
    }
  },
  methods:{
    checkall(){
      // 全选
      this.checkboxData.forEach(item => {
        item.checked = true;
      })
    },

    checkno(){
      // 全不选
      this.checkboxData.forEach(item => {
        item.checked = false;
      })
    },

    checkok(){
      // 确定
      console.log(this.checkboxData.filter(item => item.checked))
    }
  },

  created(){
    // 假装从后端获取过来的数据
    var data = [
      { dictid: 0, dictvalue: '进行中' },
      { dictid: 1, dictvalue: '已完成' },
      { dictid: 2, dictvalue: '已结算' },
      { dictid: 3, dictvalue: '已取消' },
      { dictid: 4, dictvalue: '未完成' },
    ]
    // 原数据中没有checked字段,所以给每条数据添加checked以便后续操作
    for(var i=0; i<data.length; i++){
      data[i].checked = false
    }

    // 将处理后的数据返回到页面中
    this.checkboxData = data
  }
}
</script>

<style scoped>

</style>
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值