问题描述

element-ui 的穿梭框一直有个问题,
具体来讲是穿梭框选中到目标列后,顺序不是按照选中的顺序,而是按照默认的顺序排列的。虽说选中value是按照选择顺序的,但这种不一致还是让使用者比较迷惑。

相关issue
有位同学吐槽的好哈:

左侧饭店菜单, 右侧客户已点菜单, 已点菜的显示顺序和饭店菜单的顺序必须保持一致这样合适么...
—— from llwslc

官方团队目前尚未改进的计划。
无奈只能自己动手改了。

我使用的是v1.4.2版本。

一、参考官方教程搭建开发环境

https://github.com/ElemeFE/element/blob/master/.github/CONTRIBUTING.zh-CN.md

下载指定版本的源代码,进入项目目录, 执行

npm run dev

二、修改代码

Transfer组件定义在

packages/Transfer/main.vue

具体代码就不一行行解释了。

主要注意以下代码:

computed: {sourceData() {return this.data.filter(item => this.value.indexOf(item[this.props.key]) === -1);},targetData() {// 源代码的实现方式,根据选中的数据对原数组进行过滤,这里通过filter的方式,不会改变项目在原数组的位置,所以会出现穿梭框右侧的选中列表和选择的顺序不一致的情况。// return this.data.filter(item => this.value.indexOf(item[this.props.key]) > -1);//  改进代码,遍历选中值,查询原数组的对应项目,组成新数组,这样新数组的顺序就和选中的值保持一致了。let tmp = [];this.value.forEach(item => {let i = this.data.findIndex(it => it[this.props.key] === item);tmp.push(this.data[i]);});return tmp;},hasButtonTexts() {return this.buttonTexts.length === 2;}
}

三、打包发布

npm run dist
将dist目录下的lib覆盖自己项目目录下的lib即可

<完>

修改element-ui源码解决穿梭框选择后显示顺序问题相关推荐

  1. 从 Element UI 源码的构建流程看前端 UI 库设计

    引言 由于业务需要,近期团队要搞一套自己的UI组件库,框架方面还是Vue.而业界已经有比较成熟的一些UI库了,比如ElementUI.AntDesign.Vant等. 结合框架Vue,我们选择在Ele ...

  2. django-oscar的物流状态pending修改以及分析源码解决报错:The new status 'xxx' is not valid for this order

    先说物流状态的修改: django-oscar自带的物流状态是四个: OSCAR_INITIAL_ORDER_STATUS = 'Pending' OSCAR_INITIAL_LINE_STATUS ...

  3. 修改element UI的select下拉框组件右边的小箭头(使用自定义图片)

    i.el-select__caret {/*很关键:将默认的select选择框样式清除*/ appearance:none;-moz-appearance:none;-webkit-appearanc ...

  4. 修改CKplayer.js 源码解决移动端浏览器全屏不能限制快进的问题

    原文地址:https://www.cnblogs.com/jying/p/9642445.html,转载请说明出处. 最近项目需要播放视频且限制未观看部分的快进功能,找了两款js插件ckplayer和 ...

  5. 【JS协议UI源码】autoJS协议源码,JavaScript界面源码,AJ脚本利用网盘就行远程关软

    autoJS协议UI源码,该源码你可以学习到JavaScript基础语法还有简单的封装md5加密 菜单判断和多号运行,本机存储和调用知识,如何不利用使用服务器进行远程关软和远程更新,远程关软我当时是利 ...

  6. 易语言修改html内容,易语言修改网页标题源码

    易语言修改网页标题系统结构:取IES对象,GetCursorPos,WindowFromPoint,SendMessageTimeout,ObjectFromLresult,RegisterWindo ...

  7. 修改element ui的导航菜单样式,包括下拉菜单

    第一次使用element ui,根据项目需求,选择了NavMenu导航菜单, Element - The world's most popular Vue UI framework 首先将代码复制粘贴 ...

  8. 修改Android10系统源码关闭selinux

    一.seandroid简介 SEAndroid是Google在Android4.4上正式推出的一套以SELinux为核心的系统安全机制.在Android源码中,系统默认的seandroid配置存放如下 ...

  9. 直播网站程序源码,搜索框实现快速搜索功能

    直播网站程序源码,搜索框实现快速搜索功能 module.exports = async function (params, context) {const db = context.databasec ...

最新文章

  1. php编译html,将PHP模板文件编译为静态HTML页面的Ant任务
  2. python中的time库安装步骤-Python中time模块的使用
  3. 印尼互联网交换中心失火,或由电路短路引发
  4. spring之AOP(转)
  5. Unity3D ShaderLab 菲涅耳内轮廓
  6. 多字节与UTF-8、Unicode之间的转换
  7. Redis(案例五:Set数据)
  8. 博客堂怎么连个搜索功能都没有
  9. 什么是编程语言,大神教你为什么要学C语言?
  10. 楼市捞金术:我是怎么在9个月把房价炒高两三倍的
  11. 三维激光扫描数据处理理论及应用
  12. 02 . 在 Linux 上安装Oracle11g 数据库
  13. python全栈自动化测试工程师第11期柠檬班vip_因为Python,班主任最近都开始化妆了!...
  14. (附源码)springboot 学生选课系统 毕业设计 612555
  15. §6.5 分离性公理与子空间,(有限)积空间和商空间
  16. WorkManager
  17. linux压缩文件命令_24.gzip、unzip命令详解 - 钟桂耀
  18. 备战第十二届蓝桥杯电子类《EDA设计与开发》国赛
  19. spark实战问题(一):is running beyond physical memory limits. Current usage: xx GB of xx GB physical memory
  20. 【jzoj4668】【腐败】【数论】【快速乘】

热门文章

  1. linux 的 usr 文件
  2. android10热点验证身份,在 Android 上使用 Microsoft 进行身份验证
  3. 被踢出sci_心痛啊!全世界历史最长的期刊,被踢出SCI了!
  4. Android NDK-helloJNI
  5. Excel自定义函数使用正则表达式详解
  6. 超详细mysql left join,right join,inner join用法分析
  7. Hibernate中的merge使用详情解说
  8. java中获取文件路径的几种方式
  9. StackExchange.Redis学习笔记(五) 发布和订阅
  10. Identityserver4中ResourceOwnerPassword 模式获取refreshtoken