基于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

相关文章

JavaWeb 中的 Filter组件详解

《JavaWeb中的Filter组件详解》本文详细介绍了JavaWeb中的Filter组件,包括其基本概念、工作原理、核心接口和类、配置方式以及常见应用示例,Filter可以实现请求预处理、响应后... 目录JavaWeb 中的 Filter 详解1. Filter 基本概念1.1 什么是 Filter1.

2025最新版Android Studio安装及组件配置教程(SDK、JDK、Gradle)

《2025最新版AndroidStudio安装及组件配置教程(SDK、JDK、Gradle)》:本文主要介绍2025最新版AndroidStudio安装及组件配置(SDK、JDK、Gradle... 目录原生 android 简介Android Studio必备组件一、Android Studio安装二、A

前端Visual Studio Code安装配置教程之下载、汉化、常用组件及基本操作

《前端VisualStudioCode安装配置教程之下载、汉化、常用组件及基本操作》VisualStudioCode是微软推出的一个强大的代码编辑器,功能强大,操作简单便捷,还有着良好的用户界面,... 目录一、Visual Studio Code下载二、汉化三、常用组件1、Auto Rename Tag2

Linux下利用select实现串口数据读取过程

《Linux下利用select实现串口数据读取过程》文章介绍Linux中使用select、poll或epoll实现串口数据读取,通过I/O多路复用机制在数据到达时触发读取,避免持续轮询,示例代码展示设... 目录示例代码(使用select实现)代码解释总结在 linux 系统里,我们可以借助 select、

Vue3视频播放组件 vue3-video-play使用方式

《Vue3视频播放组件vue3-video-play使用方式》vue3-video-play是Vue3的视频播放组件,基于原生video标签开发,支持MP4和HLS流,提供全局/局部引入方式,可监听... 目录一、安装二、全局引入三、局部引入四、基本使用五、事件监听六、播放 HLS 流七、更多功能总结在 v

Python实现简单封装网络请求的示例详解

《Python实现简单封装网络请求的示例详解》这篇文章主要为大家详细介绍了Python实现简单封装网络请求的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录安装依赖核心功能说明1. 类与方法概览2.NetHelper类初始化参数3.ApiResponse类属性与方法使用实

Vue和React受控组件的区别小结

《Vue和React受控组件的区别小结》本文主要介绍了Vue和React受控组件的区别小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录背景React 的实现vue3 的实现写法一:直接修改事件参数写法二:通过ref引用 DOMVu

Go中select多路复用的实现示例

《Go中select多路复用的实现示例》Go的select用于多通道通信,实现多路复用,支持随机选择、超时控制及非阻塞操作,建议合理使用以避免协程泄漏和死循环,感兴趣的可以了解一下... 目录一、什么是select基本语法:二、select 使用示例示例1:监听多个通道输入三、select的特性四、使用se

Python用Flask封装API及调用详解

《Python用Flask封装API及调用详解》本文介绍Flask的优势(轻量、灵活、易扩展),对比GET/POST表单/JSON请求方式,涵盖错误处理、开发建议及生产环境部署注意事项... 目录一、Flask的优势一、基础设置二、GET请求方式服务端代码客户端调用三、POST表单方式服务端代码客户端调用四

Go语言使用select监听多个channel的示例详解

《Go语言使用select监听多个channel的示例详解》本文将聚焦Go并发中的一个强力工具,select,这篇文章将通过实际案例学习如何优雅地监听多个Channel,实现多任务处理、超时控制和非阻... 目录一、前言:为什么要使用select二、实战目标三、案例代码:监听两个任务结果和超时四、运行示例五