全部
常见问题
产品动态
精选推荐

使用 Element UI 和 SortableJS 实现 el-table 拖拽排序

管理 管理 编辑 删除

本文将介绍如何在使用 Element UI 的 Vue 应用中,结合 SortableJS 库,为 el-table 组件添加拖拽排序功能。

在开始之前,确保你的项目中已经安装了 Element UI 和 SortableJS。如果尚未安装,可以通过以下命令进行安装:

npm install element-ui sortablejs

实现步骤

第一步:创建基础表格

首先,我们需要一个基本的 el-table。这个表格将展示一些可排序的数据。下面是一个简单的表格示例:

0eb52202403291730094733.png

第二步:引入 SortableJS 并初始化

接下来,我们需要通过 SortableJS 使 el-table 的行变得可拖拽。这需要在 Vue 组件的 mounted 钩子中完成:

import Sortable from 'sortablejs';

export default {
  mounted() {
    this.initSortable();
  },
  methods: {
    initSortable() {
      const el = this.$refs.myTable.$el.querySelector('.el-table__body-wrapper tbody');
      Sortable.create(el, {
        handle: '.drag-handle',
        animation: 150,
        onEnd: this.handleDragEnd,
      });
    },
    handleDragEnd(evt) {
      // 拖拽结束后的处理逻辑
    },
  },
};

在这个例子中,我们通过查询选择器找到 el-tabletbody 元素,并对它应用 Sortable.create 方法使其成为可拖拽的。我们还定义了 handleDragEnd 方法来处理拖拽结束后的逻辑,例如更新数据顺序。

第三步:更新数据顺序

拖拽结束后,我们需要根据拖拽结果更新表格数据的顺序。这可以通过修改 handleDragEnd 方法来实现:

handleDragEnd(evt) {
  const { oldIndex, newIndex } = evt;
  const movedItem = this.tableData.splice(oldIndex, 1)[0];
  this.tableData.splice(newIndex, 0, movedItem);
}

在这里,我们使用 splice 方法从数组中移除被拖拽的项,并将其插入到新的位置。

第四步:添加拖拽把手

为了提高用户体验,我们可以为每一行添加一个拖拽把手,让用户知道哪里可以拖拽。这可以通过添加一个新的 el-table-column 来实现:

2d666202403291730304562.png


请登录后查看

xmn 最后编辑于2024-03-29 17:30:33

快捷回复
回复
回复
回复({{post_count}}) {{!is_user ? '我的回复' :'全部回复'}}
排序 默认正序 回复倒序 点赞倒序

{{item.user_info.nickname ? item.user_info.nickname : item.user_name}} LV.{{ item.user_info.bbs_level }}

作者 管理员 企业

{{item.floor}}# 同步到gitee 已同步到gitee {{item.is_suggest == 1? '取消推荐': '推荐'}}
{{item.is_suggest == 1? '取消推荐': '推荐'}}
沙发 板凳 地板 {{item.floor}}#
{{item.user_info.title || '暂无简介'}}
附件

{{itemf.name}}

{{item.created_at}}  {{item.ip_address}}
{{item.like_count}}
{{item.showReply ? '取消回复' : '回复'}}
删除
回复
回复

{{itemc.user_info.nickname}}

{{itemc.user_name}}

回复 {{itemc.comment_user_info.nickname}}

附件

{{itemf.name}}

{{itemc.created_at}}
{{itemc.like_count}}
{{itemc.showReply ? '取消回复' : '回复'}}
删除
回复
回复
查看更多
2848
{{like_count}}
{{collect_count}}
添加回复 ({{post_count}})

相关推荐

快速安全登录

使用微信扫码登录
{{item.label}} 加精
{{item.label}} {{item.label}} 板块推荐 常见问题 产品动态 精选推荐 首页头条 首页动态 首页推荐
取 消 确 定
回复
回复
问题:
问题自动获取的帖子内容,不准确时需要手动修改. [获取答案]
答案:
提交
bug 需求 取 消 确 定

微信登录/注册

切换手机号登录

{{ bind_phone ? '绑定手机' : '手机登录'}}

{{codeText}}
切换微信登录/注册
暂不绑定
CRMEB客服

CRMEB咨询热线 咨询热线

400-8888-794

微信扫码咨询

CRMEB开源商城下载 源码下载 CRMEB帮助文档 帮助文档
返回顶部 返回顶部
CRMEB客服