当前位置: 首页 > news >正文

js鼠标拖拽 修改el-table表格顺序 vue2 + element-ui js

在 Vue 2 和 Element UI 中,如果你想要通过鼠标拖拽来修改 el-table 的顺序,可以使用 Sortable.js 库来实现。以下是具体步骤和代码示例:


实现步骤

  1. 安装依赖
    首先,需要安装 sortablejs

    npm install sortablejs --save
    
  2. 引入 Sortable.js
    在你的 Vue 组件中引入 Sortable.js

  3. 绑定拖拽事件
    使用 Sortable.create 方法对表格的 <tbody> 进行拖拽排序,并实时更新数据。

  4. 更新数据
    拖拽完成后,更新 Vue 数据以同步表格的显示。


示例代码

<template>
  <div>
    <el-table
      ref="dragTable"
      :data="tableData"
      style="width: 100%"
      border
    >
      <el-table-column prop="date" label="日期" width="180"></el-table-column>
      <el-table-column prop="name" label="姓名" width="180"></el-table-column>
      <el-table-column prop="address" label="地址"></el-table-column>
    </el-table>
  </div>
</template>

<script>
import Sortable from "sortablejs";

export default {
  data() {
    return {
      tableData: [
        { date: "2025-04-10", name: "张三", address: "北京市" },
        { date: "2025-04-09", name: "李四", address: "上海市" },
        { date: "2025-04-08", name: "王五", address: "广州市" },
      ],
    };
  },
  mounted() {
    this.initSortable();
  },
  methods: {
    initSortable() {
      const table = this.$refs.dragTable.$el.querySelector(".el-table__body-wrapper tbody");
      Sortable.create(table, {
        animation: 150, // 动画效果
        onEnd: (evt) => {
          const { oldIndex, newIndex } = evt;
          // 更新数据顺序
          const movedItem = this.tableData.splice(oldIndex, 1)[0];
          this.tableData.splice(newIndex, 0, movedItem);
        },
      });
    },
  },
};
</script>

<style scoped>
/* 样式可以根据需求自行调整 */
</style>

代码说明

  1. mounted 钩子
    在组件挂载后调用 initSortable 方法初始化拖拽功能。
  2. 获取表格的 <tbody> 元素
    使用 this.$refs.dragTable.$el.querySelector 获取表格的 <tbody> 元素。
  3. Sortable.create
    • animation: 设置拖拽动画时间(单位为毫秒)。
    • onEnd: 拖拽完成时触发的回调函数,参数 evt 包含了拖拽的起始索引 (oldIndex) 和目标索引 (newIndex)。
  4. 更新数据
    使用数组的 splice 方法将被拖拽的行从原位置移除,并插入到新位置。

注意事项

  1. 样式问题
    如果表格内容较多或有复杂的样式,可能需要调整 Sortable.js 的配置或 CSS 样式,以确保拖拽体验流畅。
  2. 性能优化
    对于大数据量的表格,建议分页加载或虚拟滚动,避免性能瓶颈。
  3. 兼容性
    确保 Sortable.jsElement UI 的版本兼容,必要时查看官方文档。

这样,你就可以通过鼠标拖拽来修改 el-table 表格的顺序了!

相关文章:

  • Python 装饰器(Decorator)
  • 解锁 HTML5 表单新力量:<datalist>、<keygen>、<output>元素深度解析
  • Redis 集群(Cluster)
  • python基础:变量-数据类型(整数类型、浮点类型、布尔类型、字符串类型)
  • tree-sitter的grammar.js解惑
  • Java学习手册:Java基本语法与数据类型
  • 众趣科技助力商家“以真示人”,让消费场景更真实透明
  • 深入理解Apache Kafka
  • [特殊字符] Spring Boot 日志系统入门博客大纲(适合初学者)
  • 网络4 OSI7层
  • Vccaux_IO在DDR3接口中的作用
  • K8S-证书过期更新
  • 医药行业的数据安全与加密软件
  • 阿里云服务迁移实战: 01-大纲
  • 禅道MCP Server开发实践与功能全解析
  • [leetcode]stack的基本操作的回顾
  • 大模型本地部署系列(3) Ollama部署QwQ[阿里云通义千问]
  • 前端-Vue3
  • 代码随想录算法训练营第十五天
  • Shell四种配置文件的区别(~/.bashrc ~/.bash_profile ~/.zshrc ~/.profile)
  • 怎么查看网站啥系统做的/现在感染症状有哪些
  • 精品课程网站建设的背景及意义/长沙优化科技
  • 北京品牌网站建设公司排名/搜索引擎优化的七个步骤
  • 网站上的缩略图怎么做清晰/株洲发布最新通告
  • 深圳网站建设lxhd/上海最新疫情
  • 重庆今天刚刚发生的新闻/相城seo网站优化软件