实现简单的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('成功')
        }
      })
    }
  },

第六步,实现效果

相关推荐
自然 醒1 小时前
企业微信自建应用开发详细教程,如何获取授权链接?如何使用js-sdk?
javascript·vue.js·企业微信
AKclown2 小时前
基于Monaco的diffEditor实现内容对比
前端·vue.js·react.js
gongzemin2 小时前
使用阿里云ECS部署前端应用
前端·vue.js·后端
用户9714171814272 小时前
前端开发中的跨域问题:Vite 开发环境配置指南
vue.js·vite
可别3903 小时前
使用Worker打包报错
前端·vue.js
风中凌乱的L3 小时前
vue canvas标注
前端·vue.js·canvas
掘金013 小时前
在 Vue 3 项目中使用 MQTT 获取数据
前端·javascript·vue.js
QuantumLeap丶3 小时前
《uni-app跨平台开发完全指南》- 03 - Vue.js基础入门
前端·vue.js·uni-app
一 乐4 小时前
个人理财系统|基于java+小程序+APP的个人理财系统设计与实现(源码+数据库+文档)
java·前端·数据库·vue.js·后端·小程序
网络点点滴4 小时前
reactive创建对象类型的响应式数据
前端·javascript·vue.js