• 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增加拖拽功能

作者:站长图库 字体:[增加 减小] 来源:互联网

站长图库向大家介绍了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(e
  


 
分享到: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跳转页面不刷新怎么办

相关文章

  • DedeCMS关键词替换问题较完美解决方案
  • JavaScript中如何判断函数、变量是否存在
  • Photoshop打造超酷的火焰图形
  • Photoshop制作立体效果的像素艺术字
  • 聊聊valet是否有适合TP5的驱动?
  • Illustrator绘制一只超萌的企鹅
  • PHP指定范围内且不重复的随机值方法
  • PHP怎么实现加好友功能
  • 常用的前端JavaScript方法封装
  • 使用Vue实现移动端左滑删除效果

文章分类

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

最近更新的内容

    • Photoshop设计卡通风格的云彩效果
    • Photoshop巧用滤镜打造璀璨星球夜空图
    • Photoshop设计国外木纹风格的网页模板
    • PHP版抖音去水印代码
    • CorelDRAW绘制可爱的卡通蘑菇与花朵
    • 百度更加重视和同行交换连接,事实证明
    • 基于开发中使用UEditor编辑器的注意事项详解
    • DEDECMS V5.7 伪静态设置
    • 怎么为WordPress上下篇文章链接添加缩略图
    • PS制作非常逼真的针织吊牌

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

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