vue表格拖拽使用Sortable插件库
2024-10-21 18:52:08
1 <template >
2 <el-table
3 row-key="name"
4 :data="tableData"
5 stripe style="width:100%;">
6 <el-table-column prop="name" label="测试"></el-table-column>
7 </el-table>
8 </template>
9
10 <script>
11 import Sortable from 'sortablejs'
12
13 export default {
14 data() {
15 return {
16 tableData: [
17 {
18 name: '凯小默111'
19 },
20 {
21 name: '凯小默222'
22 },
23 {
24 name: '凯小默333'
25 },
26 {
27 name: '凯小默444'
28 },
29 {
30 name: '凯小默555'
31 }
32 ]
33 }
34 },
35 mounted() {
36 //使每次都可以拖拽
37 this.$nextTick(()=>{
38 setTimeout(()=>{
39 this.rowDrop();
40 },100)
41 })
42 },
43 methods: {
44 //行拖拽
45 rowDrop() {
46 const tbody = document.querySelector('.el-table__body-wrapper tbody')
47 Sortable.create(tbody, {
48 onEnd:({ newIndex, oldIndex })=> {
49 const currRow = this.tableData.splice(oldIndex, 1)[0];
50 this.tableData.splice(newIndex, 0, currRow);
51 console.log(this.tableData);
52 }
53 })
54 },
55 }
56 }
57 </script>
如果碰到了火狐浏览器拖动会在新窗口打开并去百度进行搜索等问题,如下解决方式:
mounted() {
document.body.ondrop = function (event) {
event.preventDefault()
event.stopPropagation()
}
<template >
<el-table
row-key="name"
:data="tableData"
stripe style="width:100%;">
<el-table-column prop="name" label="测试"></el-table-column>
</el-table>
</template>
<script>
import Sortable from 'sortablejs'
export default {
data() {
return {
tableData: [
{
name: '凯小默111'
},
{
name: '凯小默222'
},
{
name: '凯小默333'
},
{
name: '凯小默444'
},
{
name: '凯小默555'
}
]
}
},
mounted() {
//使每次都可以拖拽
this.$nextTick(()=>{
setTimeout(()=>{
this.rowDrop();
},100)
})
},
methods: {
//行拖拽
rowDrop() {
const tbody = document.querySelector('.el-table__body-wrapper tbody')
Sortable.create(tbody, {
onEnd:({ newIndex, oldIndex })=> {
const currRow = this.tableData.splice(oldIndex, 1)[0];
this.tableData.splice(newIndex, 0, currRow);
console.log(this.tableData);
}
})
},
}
}
</script>
最新文章
- 老生长谈:css实现右侧固定宽度,左侧宽度自适应
- java8入门 错误:找不到或者无法加载主类
- 几个CSS3动画
- 400 Bad Request(angluarJs)
- 异步编程 z
- Java程序员的日常—— 《编程思想》关于类的使用常识
- hdu 5444 Elven Postman(二叉树)——2015 ACM/ICPC Asia Regional Changchun Online
- Eclipse启动Tomcat错误:Several ports (8080, 8009) required by Tomcat v6.0 Server at localhost are already(转载)
- Unable to resolve target &#39;android-XX&#39;的问题解决
- npm cnpm yarn
- 写一个带文本菜单的程序,菜单项如下 (1) 取五个数的和 (2) 取五个数的平均值 (X) 退出。
- mybatis源码解析之Configuration加载(三)
- c++局部变量在外可用的方法
- 使用 JavaScript 将网站后台的数据变化实时更新到前端
- C# Aspose.Cells方式导入Excel文件
- TIScript Graphics
- 当try-catch-finally代码块遇上return,代码执行流程是怎样
- AUI-靠谱的移动前端框架
- python学习之参数传递
- maven里如何根据不同的environment打包
热门文章
- 【服务器数据恢复】raid5硬盘同步数据未完成时关机的数据恢复案例
- uniapp打包app出现HTML5+ Runtime
- gitee下载项目
- zabbix利用python3脚本进行钉钉报警
- C++ primer 5th 第一章 开始 阅读笔记
- 戴尔n4110在win7下无法使用virtualbox的解决方法(应该对win7都有用)
- redis分布锁
- csp2020——T3表达式
- Error: (1061, ";Duplicate key name &#39;makerphoto_user_info_email_380c93a0_uniq&#39;";)
- C CODE STYLE 每天瞅一两眼