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

最近遇到个需求,穿梭框中的内容是树形结构的数据。查看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"

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果你想要结合`el-select`和`el-tree`,并且希望实现树形结构的多选,可以按照以下步骤操作: 1. 创建一个`selected`数组,用于存储用户选择的节点。 2. 在`el-select`组件中,设置`multiple`属性为`true`,并将`v-model`指向`selected`数组。 3. 在`el-tree`组件中,设置`show-checkbox`属性为`true`,并将`v-model`指向`selected`数组。 下面是示例代码: ``` <template> <div> <el-select v-model="selected" placeholder="请选择" multiple> <el-option v-for="node in nodes" :key="node.id" :label="node.name" :value="node.id"></el-option> </el-select> <el-tree :data="treeData" :node-key="node => node.id" show-checkbox :default-checked-keys="defaultCheckedKeys" :check-strictly="checkStrictly" :props="props" v-model="selected"></el-tree> </div> </template> <script> export default { data() { return { selected: [], nodes: [ { id: 1, name: '节点1' }, { id: 2, name: '节点2' }, { id: 3, name: '节点3' }, ], treeData: [ { id: 1, label: '一级 1', children: [ { id: 4, label: '二级 1-1', }, ], }, { id: 2, label: '一级 2', children: [ { id: 5, label: '二级 2-1', }, { id: 6, label: '二级 2-2', }, ], }, ], defaultCheckedKeys: [4, 5], checkStrictly: true, props: { children: 'children', label: 'label', value: 'id', checkStrictly: true, emitPath: false, multiple: true, checkDescendants: true, }, } }, } </script> ``` 在这个示例中,我们创建了一个`selected`数组,用于存储用户选择的节点。在`el-select`组件中,我们设置了`multiple`属性为`true`,并将`v-model`指向`selected`数组。在`el-tree`组件中,我们设置了`show-checkbox`属性为`true`,并将`v-model`指向`selected`数组。同时,我们还设置了其他一些属性,例如`checkStrictly`、`props`等,以便实现树形结构的多选

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值