• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • dedecms
  • ecshop
  • z-blog
  • UcHome
  • UCenter
  • drupal
  • WordPress
  • 帝国cms
  • phpcms
  • 动易cms
  • phpwind
  • discuz
  • 科汛cms
  • 风讯cms
  • 建站教程
  • 运营技巧
您的位置:首页 > CMS教程 >建站教程 > vue element el-transfer增加拖拽功能

vue element el-transfer增加拖拽功能

作者:站长图库 字体:[增加 减小] 来源:互联网 时间:2022-04-29

站长图库向大家介绍了vue,element,el-transfer,拖拽功能等相关知识,希望对您有所帮助

这篇文章主要介绍了vue element el-transfer增加拖拽功能,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

芯资管项目要求el-transfer增加拖拽排序,左右上下互相拖拽功能;

原来的组件不支持拖拽,这里要用个第三方脱宅组件sortablejs

首先安装

sudo npm i sortablejs --save-dev

html代码

<template>    <el-transfer ref="transfer" id="transfer" v-model="value" :data="data">        <span slot-scope="{ option }" :draggable="!option.disabled" @dragstart="drag($event,option)">{{ option.key }} - {{ option.label }}</span>    </el-transfer></template>

create

<script>import Sortable from 'sortablejs'export default {    data() {        const generateData = _ => {            const data = []; for (let i = 1; i <= 15; i++) {                data.push({                    key: i,                    label: `备选项 ${i}`,                    disabled: i % 4 === 0                 });            } return data;        }; return {            data: generateData(),            value: [1, 4],            draggingKey : null         }    },    mounted() {        const transfer = this.$refs.transfer.$el        const leftPanel = transfer.getElementsByClassName("el-transfer-panel")[0].getElementsByClassName("el-transfer-panel__body")[0];        const rightPanel = transfer.getElementsByClassName("el-transfer-panel")[1].getElementsByClassName("el-transfer-panel__body")[0];        const rightEl = rightPanel.getElementsByClassName("el-transfer-panel__list")[0]        Sortable.create(rightEl,{            onEnd: (evt) => {                const {oldIndex,newIndex} = evt;                const temp = this.value[oldIndex]                 if (!temp || temp === 'undefined') {                    return                }// 解决右边最后一项从右边拖左边,有undefined的问题                this.$set(this.value,oldIndex,this.value[newIndex])                  this.$set(this.value,newIndex,temp)            }        })        const leftEl = leftPanel.getElementsByClassName("el-transfer-panel__list")[0]        Sortable.create(leftEl,{            onEnd: (evt) => {                const {oldIndex,newIndex} = evt;                const temp = this.data[oldIndex]                 if (!temp || temp === 'undefined') {                    return                } // 解决右边最后一项从右边拖左边,有undefined的问题                this.$set(this.data,oldIndex,this.data[newIndex])                 this.$set(this.data,newIndex,temp)            }        })        leftPanel.ondragover = (ev) => {            ev.preventDefault()        }        leftPanel.ondrop = (ev) => {            ev.preventDefault();            const index = this.value.indexOf(this.draggingKey) if(index !== -1){                 this.value.splice(index,1)            }        }        rightPanel.ondragover = (ev) => {            ev.preventDefault()        }        rightPanel.ondrop = (ev) => {            ev.preventDefault();  if(this.value.indexOf(this.draggingKey) === -1){                this.value.push(this.draggingKey)            }        }    },    methods: {        drag(ev,option) {             this.draggingKey = option.key        }    }}</script>

到此这篇关于vue element el-transfer增加拖拽功能的文章就介绍到这了。


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • vue.js如何实现数字滚动增加效果?代码示例
  • 详解vue中watch如何使用?watch用法介绍
  • vue仿携程轮播图效果(滑动轮播,下方高度自适应)
  • 你知道Thinkphp5.1让验证码在Electron-vue中怎么用?
  • 看看Vue中如何封装一个自动化注册全局组件
  • Ember.js和Vue.js对比,哪个框架更优秀?
  • 手把手带你使用Vue + Laravel开发一个简单的 CRUD 应用
  • 手把手教你使用Vue3实现图片散落效果
  • Vue 集成 PDF.js 实现 PDF 预览和添加水印的步骤
  • vue.js路由this.route.push跳转页面不刷新怎么办

相关文章

  • 2022-04-29Photoshop数位板人物设计教程:《主教MM》
  • 2022-04-29网站排名内部优化方法
  • 2022-04-29织梦系统“模块管理”里面的“模块列表”显示
  • 2022-04-29Node.js深入学习之浅析require函数中怎么添加钩子
  • 2022-04-29Photoshop设计炫彩效果的光环标志教程
  • 2022-04-29Thinkphp volist多重循环原样输出数组key值
  • 2022-04-29wordpress怎么添加自定义按钮并导出csv
  • 2022-04-29PHP实现腾讯短网址生成api接口实例
  • 2022-04-29PhotoShop制作蓝色梦幻动漫签名溶图教程
  • 2022-04-29PHP如何实现禁止浏览器缓存

文章分类

  • dedecms
  • ecshop
  • z-blog
  • UcHome
  • UCenter
  • drupal
  • WordPress
  • 帝国cms
  • phpcms
  • 动易cms
  • phpwind
  • discuz
  • 科汛cms
  • 风讯cms
  • 建站教程
  • 运营技巧

最近更新的内容

    • 详解ThinkPHP5实现极验滑动验证码geetest功能
    • Dedecms织梦调用当前顶级栏目名称、ID、url实现方法
    • 详解ThinkPHP怎么实现图片上传
    • 使用JS或CSS如何实现瀑布流布局,几种方案介绍
    • PS制作梦幻五彩斑斓的霓虹灯文字效果教程
    • ThinkPHP5跟laravel的区别有哪些
    • 浅析小程序中怎么让scroll-view按照指定位置滚动
    • PHP解密支付宝小程序的加密数据、手机号的示例代码
    • 帝国CMS如何修改网址+标题+关键字+描叙方法
    • Oracle怎么将日期转为字符串

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有