vue踩坑Web前端之路Vue.js专区

vue checkbox多选框按钮添加全选按钮

2019-07-31  本文已影响1人  月中眠_d56d

今天在看之前的项目的时候,之前做过一个添加角色权限的功能,截图如下:

image.png
输入角色id、角色名称后需要设置角色的权限,权限的选择为多选框
(如何实现多选框请查看: vue el-checkbox多选框标签的使用1-展示多选框列表
今天想如果选项过多,一个个勾选比较麻烦,所以想添加一个全选按钮,然后查看官网文档中,有这个功能:
image.png
官方文档地址
<template>
  <el-checkbox :indeterminate="isIndeterminate" v-model="checkAll" @change="handleCheckAllChange">全选</el-checkbox>
  <div style="margin: 15px 0;"></div>
  <el-checkbox-group v-model="checkedCities" @change="handleCheckedCitiesChange">
    <el-checkbox v-for="city in cities" :label="city" :key="city">{{city}}</el-checkbox>
  </el-checkbox-group>
</template>
<script>
  const cityOptions = ['上海', '北京', '广州', '深圳'];
  export default {
    data() {
      return {
        checkAll: false,
        checkedCities: ['上海', '北京'],
        cities: cityOptions,
        isIndeterminate: true
      };
    },
    methods: {
      handleCheckAllChange(val) {
        this.checkedCities = val ? cityOptions : [];
        this.isIndeterminate = false;
      },
      handleCheckedCitiesChange(value) {
        let checkedCount = value.length;
        this.checkAll = checkedCount === this.cities.length;
        this.isIndeterminate = checkedCount > 0 && checkedCount < this.cities.length;
      }
    }
  };
</script>

现在在我之前的项目中应用:


image.png
image.png
image.png
indeterminate

indeterminate 属性用以表示 checkbox 的不确定状态,一般用于实现全选的效果
(这里就是为什么上图每次点击全选按钮时候需要置为false、false即为全选按钮置为下图样式):


image.png image.png

然后就能实现全选按钮了:


image.png

总结

这里参考element官方文档即可实现,主要需要调整一下数据的格式即可。

上一篇下一篇

猜你喜欢

热点阅读