基于elementUI封装的带复选框el-checkbox的下拉多选el-select组件

2024-01-13 00:44

本文主要是介绍基于elementUI封装的带复选框el-checkbox的下拉多选el-select组件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

效果图:

组件:MultipleSelect.vue

<template><el-select v-model="selectValues" v-bind="$attrs" v-on="listeners" multiple placeholder="请选择" style="width: 50%" @change="changeSelect"><el-option v-if="options.length" label="全选" value="全选"><el-checkbox v-model="isSelectAll" @click.prevent.native>全选</el-checkbox></el-option><el-option v-for="item in options" :key="item[props.value]" :label="item[props.label]" :value="item[props.value]"><el-checkbox v-model="item.isCheck" @click.prevent.native>{{item[props.label]}}</el-checkbox></el-option></el-select>
</template><script>
export default {name: "MultipleSelect",inheritAttrs: false,// 似乎设不设置都可以model: {prop: "initSelectValues",event: "change"},props: {initSelectValues: {type: Array,default: () => []},// 下拉选项options: {type: Array,default: () => []},// 选项键值对props: {type: Object,default: () => {return {label: "label",value: "value"}}}},data() {return {selectValues: [],isSelectAll: false}},watch: {// 监听(全选,全不选以及checkbox是否勾选)selectValues: {handler(arr) {this.options.forEach(item => {if (arr.includes(item[this.props.value])) {item.isCheck = true} else {item.isCheck = false}})if (arr.length === this.options.length) {this.isSelectAll = true} else {this.isSelectAll = false}// 强制更新(checkbox回显)this.$forceUpdate()}}},created() {// 回显this.selectValues = this.initSelectValues},methods: {changeSelect(val) {if (val.includes("全选")) {// 说明已经全选了,所以全不选if (val.length > this.options.length) {this.selectValues = []} else {this.selectValues = this.options.map(item => item[this.props.value])}}this.$emit("change", this.selectValues)}}
}
</script><style>
</style>

使用:index.vue

<template><div id="app"><MultipleSelect v-model="value" :options="options"></MultipleSelect><el-button @click="confirm">确定</el-button></div>
</template><script>
import MultipleSelect from "./components/MultipleSelect"
export default {name: 'App',components: {MultipleSelect},data() {return {value: [],options: [{value: '选项1',label: '黄金糕'}, {value: '选项2',label: '双皮奶'}, {value: '选项3',label: '蚵仔煎'}, {value: '选项4',label: '龙须面'}, {value: '选项5',label: '北京烤鸭'}]}},methods: {confirm() {console.log("value", this.value)}}
}
</script><style></style>

多选框多选不换行

 /* 输入框超出隐藏,不换行*/.el-select__tags {flex-wrap: nowrap;overflow: auto;}/* 输入框最大宽度*/.el-select__tags-text {max-width: 90px;}

这篇关于基于elementUI封装的带复选框el-checkbox的下拉多选el-select组件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/599702

相关文章

Vue3组件中getCurrentInstance()获取App实例,但是返回null的解决方案

《Vue3组件中getCurrentInstance()获取App实例,但是返回null的解决方案》:本文主要介绍Vue3组件中getCurrentInstance()获取App实例,但是返回nu... 目录vue3组件中getCurrentInstajavascriptnce()获取App实例,但是返回n

SpringQuartz定时任务核心组件JobDetail与Trigger配置

《SpringQuartz定时任务核心组件JobDetail与Trigger配置》Spring框架与Quartz调度器的集成提供了强大而灵活的定时任务解决方案,本文主要介绍了SpringQuartz定... 目录引言一、Spring Quartz基础架构1.1 核心组件概述1.2 Spring集成优势二、J

Go 语言中的select语句详解及工作原理

《Go语言中的select语句详解及工作原理》在Go语言中,select语句是用于处理多个通道(channel)操作的一种控制结构,它类似于switch语句,本文给大家介绍Go语言中的select语... 目录Go 语言中的 select 是做什么的基本功能语法工作原理示例示例 1:监听多个通道示例 2:带

鸿蒙中Axios数据请求的封装和配置方法

《鸿蒙中Axios数据请求的封装和配置方法》:本文主要介绍鸿蒙中Axios数据请求的封装和配置方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1.配置权限 应用级权限和系统级权限2.配置网络请求的代码3.下载在Entry中 下载AxIOS4.封装Htt

SpringBoot中封装Cors自动配置方式

《SpringBoot中封装Cors自动配置方式》:本文主要介绍SpringBoot中封装Cors自动配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录SpringBoot封装Cors自动配置背景实现步骤1. 创建 GlobalCorsProperties

Vue中组件之间传值的六种方式(完整版)

《Vue中组件之间传值的六种方式(完整版)》组件是vue.js最强大的功能之一,而组件实例的作用域是相互独立的,这就意味着不同组件之间的数据无法相互引用,针对不同的使用场景,如何选择行之有效的通信方式... 目录前言方法一、props/$emit1.父组件向子组件传值2.子组件向父组件传值(通过事件形式)方

Spring组件初始化扩展点BeanPostProcessor的作用详解

《Spring组件初始化扩展点BeanPostProcessor的作用详解》本文通过实战案例和常见应用场景详细介绍了BeanPostProcessor的使用,并强调了其在Spring扩展中的重要性,感... 目录一、概述二、BeanPostProcessor的作用三、核心方法解析1、postProcessB

Java导入、导出excel用法步骤保姆级教程(附封装好的工具类)

《Java导入、导出excel用法步骤保姆级教程(附封装好的工具类)》:本文主要介绍Java导入、导出excel的相关资料,讲解了使用Java和ApachePOI库将数据导出为Excel文件,包括... 目录前言一、引入Apache POI依赖二、用法&步骤2.1 创建Excel的元素2.3 样式和字体2.

JAVA封装多线程实现的方式及原理

《JAVA封装多线程实现的方式及原理》:本文主要介绍Java中封装多线程的原理和常见方式,通过封装可以简化多线程的使用,提高安全性,并增强代码的可维护性和可扩展性,需要的朋友可以参考下... 目录前言一、封装的目标二、常见的封装方式及原理总结前言在 Java 中,封装多线程的原理主要围绕着将多线程相关的操

kotlin中的行为组件及高级用法

《kotlin中的行为组件及高级用法》Jetpack中的四大行为组件:WorkManager、DataBinding、Coroutines和Lifecycle,分别解决了后台任务调度、数据驱动UI、异... 目录WorkManager工作原理最佳实践Data Binding工作原理进阶技巧Coroutine