ElementUI表格结合Sortablejs实现【行】拖拽

本文介绍了如何在Vue项目中集成ElementUI和sortablejs,实现表格行的拖拽功能,并在拖动后更新数据至后端服务,包括安装步骤、组件示例和关键方法的实现。
摘要由CSDN通过智能技术生成

在 Vue.js 中,结合 Element UI 和 sortablejs,我们可以轻松实现表格的行拖拽功能。本文将演示如何在 Vue 项目中使用这些工具,并在拖拽后将数据更新到后端服务系统。

1、安装sortablejs
npm install element-ui sortablejs
2、在用到的页面引入文件
import Sortable from 'sortablejs'
3、示例代码

以下是一个包含表格行拖拽功能的 Vue 组件示例:

  • row-key="id" 用于指定每行数据的唯一键值,这里假设每个数据项都有一个唯一的 id 字段。
  • mounted() 钩子在组件被挂载到 DOM 后执行。这里使用 this.$nextTick 确保所有的子组件也被渲染。
    在 mounted 内部,我们通过 this.$el.querySelector 获取表格的 DOM 元素,并使用 Sortable.create 初始化拖拽功能。
<template>
  <div class="table">
    <el-table :data="questionList" row-key="id">
      <el-table-column type="index" label="序号">
      </el-table-column>
      <el-table-column prop="name" label="考题">
      </el-table-column>
      <el-table-column prop="type" label="类别">
      </el-table-column>
      <el-table-column prop="score" label="分值">
      </el-table-column>
    </el-table>
  </div>
</template>
<script>
import Sortable from 'sortablejs'
export default {
  data() {
    return {
      questionList: [{
        id: 1,
        name: '单选题123',
        type: '单选题',
        score: 10
      }, {
        id: 2,
        name: '多选题456',
        type: '多选题',
        score: 20
      }, {
        id: 3,
        name: '简答题789',
        type: '简答题',
        score: 10
      }],
    };
  },
  mounted() {
    this.$nextTick(() => {
      const el = this.$el.querySelector('.el-table__body-wrapper tbody')
      Sortable.create(el, {
        onEnd: (event) => {
          const { oldIndex, newIndex } = event
          this.updateRowOrder(oldIndex, newIndex)
        }
      })
    })
  },
  methods: {
    updateRowOrder(oldIndex, newIndex) {
      const movedItem = this.questionList.splice(oldIndex, 1)[0]
      this.questionList.splice(newIndex, 0, movedItem)
    },
  },
};
</script>

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值