基于element-ui的多选下拉框和tag标签的二次封装
前言:
今年这大半年我主要负责公司的后台教务管理的开发,这个管理系统目前主要是给公司的内部人员去配置公司的核心项目(例如:熊猫小课)的所有数据,例如课程的配置、课程期数的配置、课程版本的配置、活动的配置、课程安排表、管理员的权限配置、物流的管理、退款管理、学员咨询管理等功能。因为一开始这个教务系统的原型设计就是基于element-ui 1.4.13的版本设计的,前端一开始为了和设计稿给的原型保持一致,项目中也是基于element-ui 1.4.13在开发,现在这个版本官方已经停止维护了,我们曾经尝试过去升级element-ui到最新版本,但是发现升级后的版本和旧版本的样式有些模块改动太大,微调的成本太高,最终放弃了升级。所以后续基于后台管理element-ui部分的总结,我都是基于的element-ui 1.4.13的总结。
需要实现的效果:
选中时就显示复选框,不选中时不显示复选框

element-ui中提供的多选ui组件:

不符合我们的需求,所以我们需要想办法自己封装,但如何做呢?
element-ui中提供的其他组件:
我们可不可以将element-ui中提供的tag组件、复选框组件和普通的下拉框组件组合呢?因为这三个组合起来正是我们想要的效果。

select组件中我们可以自定义下拉框中的数据展示的样式:


如何组合呢?
<el-select class="dropdown-list" v-model="selectedValue" placeholder="请选择">
<el-option
v-for="item in options"
:key="item.plan_id"
:class="{active: isActive(item)}"
:label="item.plan_name"
:value="item.plan_id">
<el-checkbox
v-if="isActive(item)"
:label="item.plan_name"
:disabled="isActive(item)"
:checked="isActive(item)"
@change="valueChange(item)">
</el-checkbox>
<div v-else v-text="item.plan_name" @click="selectItem(item)"></div>
</el-option>
</el-select>
明白可以怎么做就发现很简单了,就是重写el-option组件,将下拉框中默认的样式用自定义的样式覆盖掉,el-option组件中下拉框的样式是定义在一个slot的插槽中的,我们在slot中定义我们自己的ui布局。
这个组件我们只需要从外部拿两个变量值:下拉框的选项、和被选择的选项值。
总结:写完之后就发现还是很简单的,记得当时写的时候都没有思路,仔细想想,质疑一下element-ui的选择框的下拉可以自定义样式吗,然后去仔细看官方文档,发现确实可以做到,思路就打开了。先想应该怎么做,先假设,再去验证,这样才能快速得到结果。
基于element-ui的多选下拉框和tag标签的二次封装的更多相关文章
- Element UI系列:Select下拉框实现默认选择
实现的主要关键点在于 v-mode 所绑定的值,必须是 options 数组中对应的 value 值
- query多选下拉框插件 jquery-multiselect(修改)
其实网上关于该控件的使用教程已经很多了,其中 query多选下拉框插件 jquery-multiselect Jquery多选下拉列表插件jquery multiselect功能介绍及使用 这2个的介 ...
- js:jquery multiSelect 多选下拉框实例
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Easyui-Combobox多选下拉框
因为工作需要,引入combobox多选下拉框,并且获取选择的值并以","分开. 效果如下: 代码如下: <html> <head> <title> ...
- Extjs4.2 多选下拉框
//多选下拉框 Ext.define('MDM.view.custom.MultiComboBox', { extend: 'Ext.form.ComboBox', alias: 'widget.mu ...
- DropDownList单选与多选下拉框
一.单选DropDownList传值 1.添加界面的DropDownList显示值问题 (1)在方法内添加ViewData的方法: var ad = new UnitsRepository(); Vi ...
- pentaho cde 自定义复选下拉框 checkbox select
pentaho 自带的component 虽多,但是当用户需要在一个表格中查看多个组别的数据时,pentaho自带的单选框就不能实现了,所以复选下拉框势在必行,实现效果如下: 实现原理是借用了jqu ...
- Bootstrap3级联多选下拉框
<!DOCTYPE html> <html> <head> <title>Bootstrap3级联多选下拉框</title> <met ...
- js怎么能取得多选下拉框选中的多个值?
方法:获取多选下拉框对象数组→循环判断option选项的selected属性(true为选中,false为未选中)→使用value属性取出选中项的值.实例演示如下: 1.HTML结构 1 2 3 4 ...
随机推荐
- xdoj-1106(判断组合数是否溢出)
1 首先 ans=c(n,a[0] )*c(n-a[0],a[1])*(n-a[0]-a[1],a[2])...... a[i]: 含义 在数列中i的个数有a[i]个 2 如何判断 x*y>p( ...
- SQLI DUMB SERIES-5
less5 (1)输入单引号,回显错误,说明存在注入点.输入的Id被一对单引号所包围,可以闭合单引号 (2)输入正常时:?id=1 说明没有显示位,因此不能使用联合查询了:可以使用报错注入,有两种方式 ...
- C4-ResNet-TF-小象cv-code
https://blog.csdn.net/chaipp0607/article/details/75577305 https://blog.csdn.net/leastsq/article/deta ...
- 20155208徐子涵 2016-2017-2 《Java程序设计》第8周学习总结
20155208徐子涵 2016-2017-2 <Java程序设计>第8周学习总结 教材学习内容总结 第14章 NIO与NIO2 14.1 认识NIO NIO概述 NIO使用频道(Chan ...
- 20155208徐子涵 2016-2017-2 《Java程序设计》第5周学习总结
20155208徐子涵 2016-2017-2 <Java程序设计>第5周学习总结 教材学习内容总结 第八章 异常处理 8.1 语法与继承结构 Java中所有错误都会被打包为对象,运用tr ...
- Django book manage system
创建一个简易的可以增删改查book的书籍管理system urls.py from django.contrib import admin from django.urls import re_pat ...
- 09 Collection,Iterator,List,listIterator,Vector,ArrayList,LinkedList,泛型,增强for,可变参数,HashSet,LinkedHashSet,TreeSet
09 Collection,Iterator,List,listIterator,Vector,ArrayList,LinkedList,泛型,增强for,可变参数,HashSet,LinkedHas ...
- Java基础三(Scanner键盘输入、Random随机数、流程控制语句)
1.引用类型变量的创建及使用2.流程控制语句之选择语句3.流程控制语句之循环语句4.循环高级 ###01创建引用类型变量公式 * A: 创建引用类型变量公式 * a: 我们要学的Scanner类是属于 ...
- MySQL安装步骤详解
MySQL安装 一.MYSQL的安装 1.打开下载的mysql安装文件mysql-5.5.27-win32.zip,双击解压缩,运行“setup.exe”. 2.选择安装类型,有“Typical(默认 ...
- Scala下划线_使用
下划线这个符号几乎贯穿了任何一本Scala编程书籍,并且在不同的场景下具有不同的含义,绕晕了不少初学者.正因如此,下划线这个特殊符号无形中增加Scala的入门难度.本文希望帮助初学者踏平这个小山坡. ...