tree结构穿梭 vue_结合el-tree和el-transfer搞一个树形穿梭框

本文介绍了如何结合elementUI的el-tree和el-transfer组件,创建一个支持树形结构数据的穿梭框。通过克隆并修改element源码,实现了将原本单层结构的穿梭框转换为树形结构,详细描述了改造过程,包括数据处理、组件交互等关键步骤。

最近遇到个需求,穿梭框中的内容是树形结构的数据。查看elementUI的transfer组件是不支持树形结构的数据,也就不能直接使用了。但是el-tree组件支持啊,那如果让tree组件和transfer组件结合一下岂不完美🤔。

准备

clone一份element的源码,找到package/tansfer/src文件夹,里面的vue文件就是我们的目标。复制一份出来到自己的项目(同时复制mixins里的emitter.js和migrating.js),接下来就对它进行改造。

|-- components

| |-- mixins

| | |-- emitter.js

| | |-- migraing.js

| |-- main.vue

| |-- transfer-panel.vue

复制代码

使用

使用之前先对main.vue,transfer-panel.vue两个文件进行简单的修改。删除locale相关代码。emitter.js和migrating.js因为路径变化需要重新引入。然后在其它组件中引入main.vue就可以使用啦(和直接使用el-transfer是一样的)。

...

import iElTransfer from '../components/main'

export default {

name: 'home',

components: {

iElTransfer

},

data () {

return {

data: [

{ key: 1, label: '备选项1', disabled: false },

{ key: 2, label: '备选项2', disabled: false }

...

]

}

}

...

}

复制代码

改造

将原来的单层结构转换成树形结构,我们有现成的el-tree使用,所以将原来显示内容的区域换成el-tree组件看看。

# transfer-panel.vue

...

v-model="checked"

v-show="!hasNoMatch && data.length > 0"

:class="{ 'is-filterable': filterable }"

class="el-transfer-panel__list">

class="el-transfer-panel__item"

:label="

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值