实现简单的element-table的拖拽效果

第一步,先随便创建element表格

html 复制代码
    <el-table ref="dragTable" :data="tableData" style="width: 100%" border fit highlight-current-row>
      <el-table-column label="日期" width="180">
        <template slot-scope="{ row }">
          <span>{{ row.date }}</span>
        </template>
      </el-table-column>
      <el-table-column label="姓名" width="180">
        <template slot-scope="{ row }">
          <span>{{ row.name }}</span>
        </template>
      </el-table-column>
      <el-table-column prop="address" label="地址">
      </el-table-column>
      <el-table-column label="拖拽">
        <template>
          <i style="cursor: pointer;" class="el-icon-setting"></i>
        </template>
      </el-table-column>
    </el-table>

第二步,里面的数据源tableData直接复制饿了么上的

第三步,需要安装sortablejs库并且在头部引入

javascript 复制代码
import Sortable from 'sortablejs'

第四步,通过ref获取table,这里给table的ref设置为dragTable

第五步,就是获取table然后设置它的一些属性,比如拖拽时的CSS,拖拽时的一些事件等,然后需要注意的是需要再生命周期函数mounted里调用这个方法,因为这个方法可以获取dom

javascript 复制代码
  data() {
    return {
      sortable: null,
    };
  },
  mounted() {
    this.dragTable()
  },

  methods: {
    dragTable() {
      const el = this.$refs.dragTable.$el.querySelectorAll('.el-table__body-wrapper > table > tbody')[0]
      this.sortable = Sortable.create(el, {
        onEnd: () => {
          alert('成功')
        }
      })
    }
  },

第六步,实现效果

相关推荐
杨荧2 小时前
基于Python的宠物服务管理系统 Python+Django+Vue.js
大数据·前端·vue.js·爬虫·python·信息可视化
南半球与北海道#5 小时前
前端引入vue-super-flow流程图插件
前端·vue.js·流程图
BillKu5 小时前
vue3+element-plus 输入框el-input设置背景颜色和字体颜色,样式效果等同于不可编辑的效果
前端·javascript·vue.js
每天学习一丢丢5 小时前
Spring Boot + Vue 项目用宝塔面板部署指南
vue.js·spring boot·后端
springfe01015 小时前
vue3组件 - 大文件上传
前端·vue.js
好好好明天会更好6 小时前
uniapp项目中小程序的生命周期
前端·vue.js
萌萌哒草头将军6 小时前
有了它 ,我彻底告别了 try-finally 🔥🔥🔥
前端·javascript·vue.js
anyup7 小时前
🔥🔥 10 天 Star 破百!uView Pro 文档也开源啦:完全免费、无广告、高效上手
前端·vue.js·uni-app
南半球与北海道#7 小时前
el-table合并单元格
javascript·vue.js·elementui·表格合并
啷咯哩咯啷8 小时前
element-plus el-tree-v2大数据量勾选节点卡顿问题
前端·javascript·vue.js