当前位置:网站首页>实际开发中,如何实现复选框的全选和不选
实际开发中,如何实现复选框的全选和不选
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>
边栏推荐
猜你喜欢
Programming hodgepodge (4)
企业需要知道的5个 IAM 最佳实践
Web Basics and Exercises for C1 Certification - My Study Notes
谷粒商城-基础篇(项目简介&项目搭建)
C1认证之web基础知识及习题——我的学习笔记
8. Custom mapping resultMap
代码重构:面向单元测试
FFmpeg源码分析:avformat_open_input
Swoole学习(一)
Can 't connect to MySQL server on' localhost3306 '(10061) simple solutions
随机推荐
Canal mysql data synchronization
谷粒商城-基础篇(项目简介&项目搭建)
Unity自动生成阻挡Collider的GameObject工具
3面头条,花7天整理了面试题和学习笔记,已正式入职半个月
TSF微服务治理实战系列(一)——治理蓝图
【问题解决】同一机器上Flask部署TensorRT报错记录
Embedded system driver primary [4] - under the basis of character device driver _ concurrency control
Unity行为树AI分享
大龄程序员的心理建设
The cost of automated testing is high and the effect is poor, so what is the significance of automated testing?
canal实现mysql数据同步
webrtc中的视频编码(一) 视频编码模块轮廓
心余力绌:企业面临的软件供应链安全困境
Unity动画生成工具
一个对象引用的思考
php实现telnet访问端口
Teenage Achievement Hackers Need These Skills
PHP解决字符乱码问题(多种编码转换)
string类简介
Tactile intelligent sharing - SSD20X realizes upgrade display progress bar