sortable+element 实现表格行拖拽的方法示例


Posted in Javascript onJune 07, 2019

背景

1、vue项目中的表格需要实现行拖拽功能

2、表格使用element组件库中el-table

方案介绍

Sortable.js

介绍:Sortable.js是一款轻量级的拖放排序列表的js插件

引用自官方文档:No jQuery required. Supports Meteor, AngularJS, React, Polymer, Vue, Knockout and any CSS library, e.g. Bootstrap.

参考地址: https://github.com/SortableJS/Sortable

vuedraggable
介绍:基于Sortable.js的vue组件,用以实现拖拽功能

引用自官方文档:Vue drag-and-drop component based on Sortable.js

参考地址: https://github.com/SortableJS/Vue.Draggable

遇到的问题
在使用vuedraggable的过程中,发现必须用<draggable></draggable>包裹拖动项的父级元素,但是element组件库对table进行封装,无法直接包裹拖动项(即tr)的父级元素

如果你的项目中,表格未使用组件库,实现可以参考 https://3water.com/article/162648.htm

解决方案

使用 sortable.js

步骤一: 安装

npm install vuedraggable

步骤二:引入

import Sortable from 'sortablejs';

@Component({
 components: {
  Sortable
 }
})

步骤三: el-table 添加row-key属性

<el-table
 ref="filterTable"
 row-key="ip" 
 @filter-change="handlerFilterChange" 
 class="cl-table" 
 :data="resourceList" 
 v-loading="resourceListLoading" 
 stripe style="width:100%;">
 <el-table-column
   prop="name"
  label="主机名" 
  :min-width="150" 
  show-overflow-tooltip>
 </el-table-column>
 </el-table>

步骤四 : 将拖拽元素设置为要拖动项的父级元素

mounted() {
   // 表格中需要实现行拖动,所以选中tr的父级元素
  const table = document.querySelector('.el-table__body-wrapper tbody')
  const self = this
  Sortable.create(table, {
   onEnd({ newIndex, oldIndex }) {
    console.log(newIndex, oldIndex)
    const targetRow = self.resourceList.splice(oldIndex, 1)[0]
    self.resourceList.splice(newIndex, 0, targetRow)
   }
  })
 }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jQuery 事件队列调整方法
Sep 18 Javascript
javascript使用location.search的示例
Nov 05 Javascript
javaScript如何处理从java后台返回的list
Apr 24 Javascript
jQuery插件Slider Revolution实现响应动画滑动图片切换效果
Jun 05 Javascript
JS实现淘宝支付宝网站的控制台菜单效果
Sep 28 Javascript
JS公共小方法之判断对象是否为domElement的实例
Nov 25 Javascript
Bootstrap框架安装使用详解
Jan 21 Javascript
浅谈vue的踩坑路
Aug 31 Javascript
js 客户端打印html 并且去掉页眉、页脚的实例
Nov 03 Javascript
js防抖和节流的深入讲解
Dec 06 Javascript
手把手带你封装一个vue component第三方库
Feb 14 Javascript
js动态获取时间的方法分析
Aug 02 Javascript
利用Vue-draggable组件实现Vue项目中表格内容的拖拽排序
Jun 07 #Javascript
Vue中实现权限控制的方法示例
Jun 07 #Javascript
vue 父组件中调用子组件函数的方法
Jun 06 #Javascript
通过seajs实现JavaScript的模块开发及按模块加载
Jun 06 #Javascript
小试小程序云开发(小结)
Jun 06 #Javascript
怎么使用javascript深度拷贝一个数组
Jun 06 #Javascript
微信小程序如何使用globalData的方法
Jun 06 #Javascript
You might like
PHP学习记录之数组函数
2018/06/01 PHP
jquery $.ajax入门应用二
2008/11/19 Javascript
JavaScript 语言基础知识点总结(思维导图)
2013/11/10 Javascript
深入理解JS中的变量及作用域、undefined与null
2014/03/04 Javascript
jquery $.trim()方法使用介绍
2014/05/21 Javascript
ECMAScript6轮播图实践知识总结
2016/08/17 Javascript
localStorage实现便签小程序
2016/11/28 Javascript
AngularJS使用带属性值的ng-app指令实现自定义模块自动加载的方法
2017/01/04 Javascript
Vue Cli与BootStrap结合实现表格分页功能
2017/08/18 Javascript
nodejs+mongodb+vue前后台配置ueditor的示例代码
2018/01/02 NodeJs
vue超时计算的组件实例代码
2018/07/09 Javascript
python实现图片批量剪切示例
2014/03/25 Python
Python实例分享:快速查找出被挂马的文件
2014/06/08 Python
Python MySQLdb模块连接操作mysql数据库实例
2015/04/08 Python
python实现斐波那契数列的方法示例
2017/01/12 Python
Tensorflow实现卷积神经网络的详细代码
2018/05/24 Python
python集合比较(交集,并集,差集)方法详解
2018/09/13 Python
Python3.5运算符操作实例详解
2019/04/25 Python
python接口自动化测试之接口数据依赖的实现方法
2019/04/26 Python
Python imageio读取视频并进行编解码详解
2019/12/10 Python
Python如何对XML 解析
2020/06/28 Python
详解CSS3伸缩布局盒模型Flex布局
2018/08/20 HTML / CSS
css3中用animation的steps属性制作帧动画
2019/04/25 HTML / CSS
Java面试题:说出如下代码的执行结果
2015/10/30 面试题
大三自我鉴定范文
2013/10/05 职场文书
小车司机岗位职责
2013/11/25 职场文书
简历自荐信
2013/12/02 职场文书
各营销点岗位职责范本
2014/03/05 职场文书
房产委托公证书
2014/04/08 职场文书
师范生求职自荐信
2014/06/14 职场文书
学校花圃的标语
2014/06/18 职场文书
新闻编辑求职信
2014/07/13 职场文书
高中美术教师事迹材料
2014/08/22 职场文书
机修车间主任岗位职责
2015/04/08 职场文书
redis的list数据类型相关命令介绍及使用
2022/01/18 Redis
吉利入股戴姆勒后smart“长大了”
2022/04/21 数码科技