vue 中使用 sortable.js 拖动表格

sortable.js 官网
拖放排序插件Sortable.js中文介绍

1. 安装 npm 或 yarn 安装

yarn add -D sortablejs 

2. 使用



var Main = {
      data() {
        return {
          tableData: [{
            date: '2016-05-02',
            name: '王小虎',
            address: '上海市普陀区金沙江路 1518 弄'
          }, {
            date: '2016-05-04',
            name: '王小跳',
            address: '上海市普陀区金沙江路 1517 弄'
          }, {
            date: '2016-05-01',
            name: '王小虎',
            address: '上海市普陀区金沙江路 1519 弄'
          }, {
            date: '2016-05-03',
            name: '王小跳',
            address: '上海市普陀区金沙江路 1516 弄'
          }]
        }
      },
      methods: {
      // 给表格添加 disableDrag  类
       disabledDrag({row}) {
         if (row.name === '王小跳') {
           return 'disabled-drag';
         } else {
           return '';
         }
       }
    },
    mounted() {
      const selector = '.el-table__body-wrapper > table > tbody';
      const el = document.querySelectorAll(selector)[0];
      Sortable.create(el, {
        onMove: evt => {
          const {dragged, related} = evt;
          console.log(dragged, related); // 拿到拖动元素和交换位置的相关元素,可做一些操作,比如某些条件下禁止拖动排序
        },
        onEnd: evt => {
          // 拖动结束
        },
        filter: '.disabled-drag'
      });
     }
    }
var Ctor = Vue.extend(Main)
new Ctor().$mount('#app')
@import url("//unpkg.com/[email protected]/lib/theme-chalk/index.css");

.el-table {
  .disabled-drag {
        color: #909399;
   }
}

效果:

王小跳不能拖动

jsfiddle 在线演示

3. 小结

事件:
onChoose:function 列表单元被选中的回调函数
onStart:function 列表单元拖动开始的回调函数
onEnd:function 列表单元拖放结束后的回调函数
onAdd:function 列表单元添加到本列表容器的回调函数
onUpdate:function 列表单元在列表容器中的排序发生变化后的回调函数
onRemove:function 列表元素移到另一个列表容器的回调函数
onFilter:function 试图选中一个被filter过滤的列表单元的回调函数
onMove:function 当移动列表单元在一个列表容器中或者多个列表容器中的回调函数
onClone:function 当创建一个列表单元副本的时候的回调函数

事件对象:
to:HTMLElement--移动到列表容器
from:HTMLElement--来源的列表容器
item:HTMLElement--被移动的列表单元
clone:HTMLElement--副本的列表单元
oldIndex:number/undefined--在列表容器中的原序号
newIndex:number/undefined--在列表容器中的新序号

方法
option(name[,value])
获得或者设置项参数,使用方法类似于jQuery用法,没有第二个参数为获得option中第一个参数所对应的值,有第二个参数时,将重新赋给第一个参数所对应的值;
toArray()
序列化可排序的列表单元的data-id(可通过配置项中dataIdAttr修改)放入一个数组,并返回这个数组中
sort()
通过自定义列表单元的data-id的数组对列表单元进行排序
save()
destroy()

你可能感兴趣的:(vue 中使用 sortable.js 拖动表格)