使用sortablejs拖拽列表排序

使用sortablejs拖拽列表排序sortablejs 版本 1 14 0 框架 vue UI elementimpor sortablejs 引入开始使用 我的接口 请求表格数据 fetchData getUser then res gt this list res data data this total res data count this nextTick gt 表格渲染完成 调用拖拽排序

sortablejs版本 ^1.14.0,框架:vue,UI:element 
import Sortable from "sortablejs" // 引入 

开始使用:

// 我的接口,请求表格数据 fetchData(){ getUser().then(res => { this.list = res.data.data; this.total = res.data.count; this.$nextTick(() => { // 表格渲染完成,调用拖拽排序方法 this.setSort(); }); }) } setSort() { // 取到表格的表体tbody(这里是elementUI,listData是我el-table的ref) const el = this.$refs.listData.$el.querySelectorAll( '.el-table__body-wrapper > table > tbody' )[0]; this.sortable = Sortable.create(el, { ghostClass: 'sortable-ghost', // Class name for the drop placeholder, setData: function (dataTransfer) { // to avoid Firefox bug // Detail see : https://github.com/RubaXa/Sortable/issues/1012 dataTransfer.setData('Text', ''); }, onEnd: async evt => { const targetRow = this.list.splice(evt.oldIndex, 1)[0]; this.list.splice(evt.newIndex, 0, targetRow); // 如果没有可供用户自定义的排序字段(使用list的index排序),无需进行下面这一步,直接更新list就行 // 我这里用户使用orderNum存贮自己的排序,所以相邻行要进行orderNum交换 if (evt.oldIndex === evt.newIndex) { // 没有交换过,什么也不做 return false; } let start, end; // 从上往下拖拽 if (evt.oldIndex < evt.newIndex) { start = evt.oldIndex; end = evt.newIndex; // 先存最后一个 const endOrderNum = this.list[end].orderNum; for (let i = end; i > start; i--) { const item = this.list[i]; const FItem = this.list[i - 1]; item.orderNum = FItem.orderNum; } // 把最后一个赋值给第一个 this.list[start].orderNum = endOrderNum; // 更新表格,这里暂时没有批量修改接口所以这样写,换成批量修改接口后直接传list全部修改就好 for (let i = end; i >= start; i--) { await updatesysCustomFormDet(this.list[i]); } } else { // 从下往上拖拽 start = evt.newIndex; end = evt.oldIndex; // 先存第一个 const startOrderNum = this.list[start].orderNum; for (let i = start; i < end; i++) { const item = this.list[i]; const LItem = this.list[i + 1]; item.orderNum = LItem.orderNum; } // 把第一个赋值给最后一个 this.list[end].orderNum = startOrderNum; // 更新表格,这里暂时没有批量修改接口所以这样写,换成批量修改接口后直接传list全部修改就好 for (let i = start; i <= end; i++) { await updatesysCustomFormDet(this.list[i]); } } // 更新完成,刷新一下表格 this.fetchData(); }, }); },  

更多用法和配置请查阅https://www.npmjs.com/package/sortablejs

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/210266.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 上午7:57
下一篇 2026年3月19日 上午7:57


相关推荐

  • Pycharm删除缓存

    Pycharm删除缓存Pycharm 缓存过大 暴力删除 content dat storageData 文件找到该文件删除即可 一般该文件的路径如下 C Users xxx PyCharm2017 2 system caches content dat storageDataC Users Administrato AppData Local JetBrains PyCharm2020 1 caches content dat storageData 另附更该默认缓存路径以解决缓存问题的方法 clickme

    2026年3月27日
    2
  • 一维数组二分法查找_二分查找算法c语言

    一维数组二分法查找_二分查找算法c语言在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。示例:现有矩阵 matrix 如下:[ [1, 4, 7, 11, 15], [2, 5, 8, 12, 19], [3, 6, 9, 16, 22], [10, 13, 14, 17, 24], [18, 21, 23, 26, 30]]给定 target = 5,返回

    2022年8月9日
    6
  • 林俊旸朋友圈发文告别阿里:为公司为千问只能做这么多了

    林俊旸朋友圈发文告别阿里:为公司为千问只能做这么多了

    2026年3月12日
    2
  • vscode中搭建Golang开发环境(图文并茂)

    vscode中搭建Golang开发环境(图文并茂)vscode中搭建Golang开发环境第一步下载Go安装包,地址:Go语言中文网,安装完成后的目录如下:通过命令行查看当前版本:第二步配置环境变量,新建两个环境变量,如下:其他平台的配置,可以参考goproxy官网。第三步打开vscode,安装一个Go插件,如下:然后打开一个已有的文件夹,并创建一个hello.go的文件,此时,右下角会提示你要安装相应的应用,选择InstallAll,等待安装即可,安装成功如下:到这里环境就搭建完成了第四步在hello.go文件中编写

    2022年10月12日
    5
  • HttpURLConnection.setRequestProperty设置请求头「建议收藏」

    HttpURLConnection.setRequestProperty设置请求头「建议收藏」HttpURLConnection.setRequestProperty(Stringkey,Stringvalue); 设置http请求头

    2025年10月19日
    5
  • 什么是代理服务器(Proxy)

    什么是代理服务器(Proxy)以类似代理人的身份去取得用户所需要的数据就是了!但是由于它的『代理』能力,使得我们可以透过代理服务器来达成防火墙功能与用户浏览数据的分析! 此外,也可以藉由代理服务器来达成节省带宽的目的,以及加快内部网络对因特网的WWW访问速度  17.1.1什么是代理服务器 我们或许会帮忙家人去办理一些杂务吧!举个例子来说,例如缴费或者是申办提款卡等等的,由于你并不是『

    2022年5月29日
    43

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号