基于Vue怎么实现树形穿梭框

发布时间:2022-04-21 17:17:53 作者:zzz
来源:亿速云 阅读:1013

基于Vue怎么实现树形穿梭框

树形穿梭框是一种常见的UI组件,通常用于在两个树形结构之间进行数据的选择和移动。基于Vue实现树形穿梭框,可以通过结合Vue的组件化思想和第三方库(如Element UI)来快速实现。本文将详细介绍如何使用Vue和Element UI实现一个树形穿梭框。

1. 环境准备

首先,确保你已经安装了Vue和Element UI。如果还没有安装,可以通过以下命令进行安装:

npm install vue
npm install element-ui

2. 创建Vue项目

使用Vue CLI创建一个新的Vue项目:

vue create tree-transfer-demo
cd tree-transfer-demo

3. 引入Element UI

main.js中引入Element UI:

import Vue from 'vue';
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';

Vue.use(ElementUI);

4. 实现树形穿梭框

4.1 创建树形穿梭框组件

src/components目录下创建一个名为TreeTransfer.vue的组件:

<template>
  <div class="tree-transfer">
    <el-transfer
      v-model="selectedKeys"
      :data="treeData"
      :props="treeProps"
      :titles="['源数据', '目标数据']"
      :left-default-checked="leftCheckedKeys"
      :right-default-checked="rightCheckedKeys"
      @change="handleChange"
    >
      <el-tree
        slot="left"
        :data="leftTreeData"
        :props="treeProps"
        node-key="id"
        show-checkbox
        @check="handleLeftCheck"
      ></el-tree>
      <el-tree
        slot="right"
        :data="rightTreeData"
        :props="treeProps"
        node-key="id"
        show-checkbox
        @check="handleRightCheck"
      ></el-tree>
    </el-transfer>
  </div>
</template>

<script>
export default {
  data() {
    return {
      treeData: [],
      selectedKeys: [],
      leftTreeData: [
        {
          id: 1,
          label: '一级 1',
          children: [
            {
              id: 4,
              label: '二级 1-1',
              children: [
                {
                  id: 9,
                  label: '三级 1-1-1'
                },
                {
                  id: 10,
                  label: '三级 1-1-2'
                }
              ]
            }
          ]
        },
        {
          id: 2,
          label: '一级 2',
          children: [
            {
              id: 5,
              label: '二级 2-1'
            },
            {
              id: 6,
              label: '二级 2-2'
            }
          ]
        },
        {
          id: 3,
          label: '一级 3',
          children: [
            {
              id: 7,
              label: '二级 3-1'
            },
            {
              id: 8,
              label: '二级 3-2'
            }
          ]
        }
      ],
      rightTreeData: [],
      treeProps: {
        label: 'label',
        children: 'children'
      },
      leftCheckedKeys: [],
      rightCheckedKeys: []
    };
  },
  methods: {
    handleChange(value, direction, movedKeys) {
      if (direction === 'left') {
        this.rightTreeData = this.rightTreeData.filter(item => !movedKeys.includes(item.id));
      } else {
        this.leftTreeData = this.leftTreeData.filter(item => !movedKeys.includes(item.id));
      }
    },
    handleLeftCheck(data, checked) {
      this.leftCheckedKeys = checked.checkedKeys;
    },
    handleRightCheck(data, checked) {
      this.rightCheckedKeys = checked.checkedKeys;
    }
  }
};
</script>

<style scoped>
.tree-transfer {
  margin: 20px;
}
</style>

4.2 使用树形穿梭框组件

App.vue中使用刚刚创建的TreeTransfer组件:

<template>
  <div id="app">
    <TreeTransfer />
  </div>
</template>

<script>
import TreeTransfer from './components/TreeTransfer.vue';

export default {
  components: {
    TreeTransfer
  }
};
</script>

<style>
#app {
  font-family: Avenir, Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
  margin-top: 60px;
}
</style>

5. 运行项目

在终端中运行以下命令启动项目:

npm run serve

打开浏览器,访问http://localhost:8080,你将看到一个功能完善的树形穿梭框。

6. 总结

通过结合Vue和Element UI,我们可以轻松实现一个功能强大的树形穿梭框。本文介绍了如何创建和使用树形穿梭框组件,并提供了完整的代码示例。你可以根据实际需求对组件进行进一步的定制和扩展。

希望本文对你有所帮助,祝你在Vue开发中取得更多成果!

推荐阅读:
  1. 树形下拉框实现 mini-treeselect
  2. vue实现树形菜单效果

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

vue

上一篇:WPF数据驱动修改绑定的方法

下一篇:微信小程序怎么实现商品列表跳转商品详情页功能

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》