当前位置:网站首页>实际开发中,如何实现复选框的全选和不选
实际开发中,如何实现复选框的全选和不选
2022-08-04 05:26:00 【愿为浪漫渡此劫】
实际开发中,如何使用ElementUI实现复选框的全选和不选
项目需求:复选框按钮样式实现全选和全不选
前言
本项目是基于,ant-design for Vue的UI库, 是没有按钮样式的多选框组件的,所以引用了ElementUI库的复选框组件
ElementUI的复选框组件使用事项
官网样例如下
注意:官网使用的是:按钮组,无法使用indeterminate属性进行全选全不选的样式控制。
所以不能使用 按钮组来实现按钮样式的 带全选的复选框
官网表明,全选的样式控制 是基于checkbox的,而不是 checkbox-button
最终实现如下:
<template>
<div id="check-box">
<el-checkbox size="small" style="margin-right: 30px;height: 40px;padding: 0px 14.5px;line-height: 40px;" :indeterminate="isIndeterminate" v-model="checkAll" @change="handleCheckAllChange">全部({
{
total}})</el-checkbox>
// 这里也必须使用checkbox 才能应用indeterminate属性
<el-checkbox-group v-model="checkedTags" @change="handleCheckedCitiesChange">
<el-checkbox size="small" v-for="tag in tags" :label="tag.id" :key="tag.id" >{
{
tag.value}}({
{
tag.count}})</el-checkbox>
</el-checkbox-group>
</div>
</template>
<script>
export default {
props : ['total','tags'],
data() {
return {
checkAll: true,
checkedTags: [], // 收集的值和label保持一致
isIndeterminate: true
};
},
watch : {
tags() {
this.checkedTags = this.tags.map(item=>item.id);
}
},
methods: {
handleCheckAllChange(val) {
this.checkedTags = val ? this.tags.map(item=>item.id) : [];
this.isIndeterminate = false;
this.$emit('checkedAll',this.checkedTags)
},
handleCheckedCitiesChange(value) {
// 这里收集的是el-checkbox label属性值
this.checkedTags = value;
this.$emit('checkedItem',this.checkedTags)
let checkedCount = value.length;
this.checkAll = checkedCount === this.tags.length;
this.isIndeterminate = checkedCount > 0 && checkedCount < this.tags.length;
}
},
mounted() {
this.checkedTags = this.tags.map(item=>item.id);
}
};
</script>
<style scoped>
#check-box {
display: flex;
}
</style>
<style>
.el-checkbox__input {
display: none;
}
.el-checkbox__label {
padding-left: 6px;
}
.el-button+.el-button, .el-checkbox.is-bordered+.el-checkbox.is-bordered {
margin-left: 0px;
}
.el-checkbox {
background: #F2F5F7;
border-radius: 2px;
padding: 9.5px 14.5px;
margin-bottom: 30px;
}
.el-checkbox.is-checked {
background: rgba(64, 140, 255, 0.1);
}
</style>
边栏推荐
猜你喜欢
4.3 基于注解的声明式事务和基于XML的声明式事务
8、自定义映射resultMap
Embedded system driver primary [3] - _IO model in character device driver foundation
npm报错Beginning October 4, 2021, all connections to the npm registry - including for package installa
解决JDBC在web工程中无法获取配置文件
TensorRT例程解读之语义分割demo
FPGA学习笔记——知识点总结
webrtc中的任务队列TaskQueue
MySQL日志篇,MySQL日志之binlog日志,binlog日志详解
8. Custom mapping resultMap
随机推荐
7.15 Day21---MySQL----Index
bind和function
部署LVS-DR群集【实验】
Programming hodgepodge (3)
5个开源组件管理小技巧
webtrc 中VideoAdapter类中的作用及局限
Handling List
TSF微服务治理实战系列(一)——治理蓝图
Cannot read properties of null (reading ‘insertBefore‘)
EventBus源码分析
Unity Visual Effect Graph入门与实践
webrtc中的任务队列TaskQueue
webrtc中的视频编码(一) 视频编码模块轮廓
webrtc中的引用计框架
Web Basics and Exercises for C1 Certification - My Study Notes
OpenSSF 安全计划:SBOM 将驱动软件供应链安全
Unity动画生成工具
将自定义类型作为关联容器的key
7.16 Day22---MYSQL(Dao模式封装JDBC)
C语言 -- 操作符详解