vue checkbox多选框按钮添加全选按钮
2019-07-31 本文已影响1人
月中眠_d56d
今天在看之前的项目的时候,之前做过一个添加角色权限的功能,截图如下:
输入角色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官方文档即可实现,主要需要调整一下数据的格式即可。