1. 下载插件 npm install sortable.js --save (下载的时候一定要这样去下载,不要去下载 npm install sortable--save
  2. 因为sortable.jssortable是不一样的哈
  3. 引入 import Sortable from 'sortablejs';
  4. // 千万不要加点.js 否者就会报错create不是一个方法
  5. 注意 这个插件是不要注册的哈。
  6. 需要注意的是element table务必指定row-keyrow-key必须是唯一的,如ID,不然会出现排序不对的情况。
  7. 参考的地址 https://blog.csdn.net/qq_26440803/article/details/83663511
  8. 为啥一开始就在mounted中调用了两个函数,不太懂?????
  1. <template>
  2. <div style="width:800px">
  3. <el-table :data="tableData"
  4. border
  5. row-key="id"
  6. align="left">
  7. <el-table-column v-for="(item, index) in col"
  8. :key="`col_${index}`"
  9. :prop="dropCol[index].prop"
  10. :label="item.label">
  11. </el-table-column>
  12. </el-table>
  13. </div>
  14. </template>
  1. <script>
  2. import Sortable from 'sortablejs'
  3. export default {
  4. data() {
  5. return {
  6. col: [
  7. {
  8. label: '日期',
  9. prop: 'date'
  10. },
  11. {
  12. label: '姓名',
  13. prop: 'name'
  14. },
  15. {
  16. label: '地址',
  17. prop: 'address'
  18. }
  19. ],
  20. dropCol: [
  21. {
  22. label: '日期',
  23. prop: 'date'
  24. },
  25. {
  26. label: '姓名',
  27. prop: 'name'
  28. },
  29. {
  30. label: '地址',
  31. prop: 'address'
  32. }
  33. ],
  34. tableData: [
  35. {
  36. id: '1',
  37. date: '2016-05-02',
  38. name: '王小虎1',
  39. address: '上海市普陀区金沙江路 100 弄'
  40. },
  41. {
  42. id: '2',
  43. date: '2016-05-04',
  44. name: '王小虎2',
  45. address: '上海市普陀区金沙江路 200 弄'
  46. },
  47. {
  48. id: '3',
  49. date: '2016-05-01',
  50. name: '王小虎3',
  51. address: '上海市普陀区金沙江路 300 弄'
  52. },
  53. {
  54. id: '4',
  55. date: '2016-05-03',
  56. name: '王小虎4',
  57. address: '上海市普陀区金沙江路 400 弄'
  58. }
  59. ]
  60. }
  61. },
  62. mounted() {
  63. this.rowDrop()
  64. this.columnDrop()
  65. },
  66. methods: {
  67. //行拖拽
  68. rowDrop() {
  69. const tbody = document.querySelector('.el-table__body-wrapper tbody')
  70. const _this = this
  71. Sortable.create(tbody, {
  72. onEnd({ newIndex, oldIndex }) {
  73. const currRow = _this.tableData.splice(oldIndex, 1)[0]
  74. _this.tableData.splice(newIndex, 0, currRow)
  75. }
  76. })
  77. },
  78. //列拖拽
  79. columnDrop() {
  80. const wrapperTr = document.querySelector('.el-table__header-wrapper tr')
  81. this.sortable = Sortable.create(wrapperTr, {
  82. animation: 180,
  83. delay: 0,
  84. onEnd: evt => {
  85. const oldItem = this.dropCol[evt.oldIndex]
  86. this.dropCol.splice(evt.oldIndex, 1)
  87. this.dropCol.splice(evt.newIndex, 0, oldItem)
  88. }
  89. })
  90. }
  91. }
  92. }
  93. </script>

https://www.cnblogs.com/xiangcheng618/p/10241090.html 这个地址也可以进行拖拽,明天去研究一下

在后来和产品的沟通中发现,并不是这样的效果。

他希望排序后,做左边的日期也能够排序。

所以其他的都不改变,是改变这个rowDrop方法。


  1. //行拖拽
  2. rowDrop() {
  3. const tbody = document.querySelector('.el-table__body-wrapper tbody')
  4. const _this = this
  5. Sortable.create(tbody, {
  6. onEnd({ newIndex, oldIndex }) {
  7. const currRow = _this.tableData.splice(oldIndex, 1)[0]
  8. _this.tableData.splice(newIndex, 0, currRow)
  9. //对日期进行重新排序
  10. for(let i=0;i<_this.tableData.length;i++){
  11. _this.tableData[i].date=i+1;
  12. }
  13. }
  14. })
  15. },
  1. 如何达到产品说的那一种效果。我之前回来想了很久。都没有做好.
  2. 今天忽然脑壳开窍了,就想明白了。
  3. 我觉得 思维灵活比是编成中最重要的,没有之一哈。
  1. 需要注意一下,你在浏览器中是ok的;
  2. 但是你在火狐浏览器上会出现拖拽的时
  3. 火狐还是打开了一个新的tab,并且搜索了。
  4. 那么应该如何去解决呢???
  5. created() {
  6. document.body.ondrop = function (event) {
  7. event.preventDefault();
  8. event.stopPropagation();
  9. }
  10. },

vue插件实现表格拖拽 sortable 遇见的坑的更多相关文章

  1. react拖拽(表格拖拽排序、普通拖拽排序以及树形拖拽排序)

    表格拖拽排序:组件地址:https://reactabular.js.org/#/drag-and-drop 拖动的排序是用React-DnD:React-DnD:http://react-dnd.g ...

  2. js 实现table表格拖拽和点击表头升降序排序

    js 实现table表格拖拽和点击表头升降序排序,写的比较乱,用的时候可以把其中的一些模块函数提取出来 样式,由于是可拖拽表格,所以样式 table tr th{cursor:move;} js实现 ...

  3. 实现Bootstrap表格拖拽

    实现Bootstrap表格拖拽: 需要引入jquery.min.js.bootstrap相关文件,以及jquery.dragsort-0.5.2.js 代码如下: <html> <h ...

  4. Vue. 之 Element dialog 拖拽

    Vue. 之 Element dialog 拖拽 默认情况下,在使用Element的Dialog模块时,弹出框是不能移动的,且 一旦点击遮罩层区域,弹框就会消失. 解决方案: 1 在 utils 中新 ...

  5. DataTransfer.setDragImage()自定义拖拽图像遇到的坑

    发生拖动时,从拖动目标(dragstart事件触发的元素)生成半透明图像,并在拖动过程中跟随鼠标指针.这个图片是自动创建的,你不需要自己去创建它.然而,如果想要设置为自定义图像,那么 DataTran ...

  6. vue表格拖拽使用Sortable插件库

    1 <template > 2 <el-table 3 row-key="name" 4 :data="tableData" 5 stripe ...

  7. Vue.Draggable实现拖拽效果(采坑小记)

    之前有写过Vue.Draggable实现拖拽效果(快速使用)(http://www.cnblogs.com/songdongdong/p/6928945.html)最近项目中要用到这个拖拽的效果,当产 ...

  8. vue2+element表格拖拽

    1.定义好拖拽元素 ref标识,以及 row-key="id"  (row-key拖拽标识,拖拽后数据不会乱, id为tableDataNew数据对象id) 2.下载cnpm in ...

  9. linux chromuim安装常用插件(flash,手势,拖拽,广告屏蔽)

    1.本机kali2.0  64位,kali基于Debian.文章所用的所有插件请到http://files.cnblogs.com/files/yuuyuu/chromium_plugins.tar. ...

  10. 根据HTML5的新方法 drag & drop 方法实现表格拖拽实例

    上一次学习了html5的drag和drop方法,传送门  就自己写了个例子加深自己对drag和drop的理解.不过一开始不是很简单,遇到了不少问题.还好网络万能的,什么都能查到,总算完成了. 说明和详 ...

随机推荐

  1. 企业诊断屋:二手车交易平台 APP 如何用 AB 测试赋能业务

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 2023年汽车行业新车市场低靡,由新车降价引发的车辆价格波动很快传导到二手车市场,二手车的交易也受到了冲击,收车验 ...

  2. pod内部网络实现

    k8s主题系列: 一.k8s网络之设计与实现 二.k8s网络之pod内部网络 三.k8s网络之Flannel网络 四.k8s网络之Calico网络 pod特性 Pod 是 K8S 的最小工作单元.每个 ...

  3. AtCoder Beginner Contest 171 AK!

    这一场好神奇!能AK了 AB水题, C - One Quadrillion and One Dalmatians 把一个数字转化为字母,规则为 \([1,26]\) 对应 \([a,z]\) , 27 ...

  4. 【每日一题】39. Contest(树状数组 / 容斥分治)

    补题链接:Here 算法涉及:树状数组.CDQ分治 n支队伍一共参加了三场比赛. 一支队伍x认为自己比另一支队伍y强当且仅当x在至少一场比赛中比y的排名高. 求有多少组(x,y),使得x自己觉得比y强 ...

  5. vue 状态管理 三、Mutations和Getters用法

    系列导航 vue 状态管理 一.状态管理概念和基本结构 vue 状态管理 二.状态管理的基本使用 vue 状态管理 三.Mutations和Getters用法 vue 状态管理 四.Action用法 ...

  6. html5 video视频,本地环境好的,线上环境,不能播放

    本地环境ok,发布到线上不能播放.之前看这个视频,把video放在public文件夹下的. 后来经过排查,video放public文件夹下,导致的.应该放assets里. 后来,和同事讨论,线上服务器 ...

  7. 响应式开发bootstrap

    响应式开发原理 就是使用媒体查询针对不同宽度的设备进行布局和样式的设置,从而适配不同设备的目的. 平时我们响应式尺寸划分 超小屏幕(手机,小于768px):设置宽度为100% 小屏幕(平板,大于等于7 ...

  8. cookie和token验证区别

  9. 无向图求割点 UVA 315

    ***割点概念:去掉一个点后图不连通,该点就为割点 割点满足的条件: 一个顶点u是割点,当且仅当满足(1)或(2) (1) u为树根,且u有多于一个子树. (2) u不为树根,且满足存在(u,v)为树 ...

  10. Vue第三篇 Vue组件

    01-组件的全局注册 <!DOCTYPE html> <html lang="en"> <head> <meta charset=&quo ...