Sortablejs实现vue项目表格拖动排序

2023-11-09

1.简介:

Sortable.js是一款优秀的js拖拽库,支持ie9及以上版本ie浏览器和现代浏览器,也可以运行在移动触摸设备中。不依赖jQuery。支持 Meteor、AngularJS、React、Vue、Knockout框架和任何CSS库,如Bootstrap、Element UI。你可以用来拖拽div、table等元素。

2.官网:

(1)中文文档教程:sortable.js中文文档 - itxst.comhttps://www.itxst.com/sortablejs/neuinffi.html

(2)直观了解及效果使用:Sortable.js中文网http://www.sortablejs.com/

(3)详细文档教程:sortablejs - npmhttps://www.npmjs.com/package/sortablejs

3.使用:

(注:row-key==>值数据中id,id:标记表格行)

<template>
   <div class="main-content">
        <el-table
          ref="multipleTable"
          :data="tables"
          border
          fit
          highlight-current-row
          row-key="id"       
          id="tableRowDrop"
        >
          <el-table-column>11</el-table-column>
          <el-table-column>22</el-table-column>
          <el-table-column>33</el-table-column>
       </el-table>
  </div>
</template>

<script>

import Sortable from 'sortablejs'   //下载插件命令:npm install sortablejs --save
​
export default {
data(){
  return{
    tables:[],     //保存表格显示数据
    rowSortOld:[], //保存表格行拖动前:id顺序数组(旧)
    rowSortNew:[]  //保存表格行拖动后:id顺序数组(新)
  }
},
    
mounted() {
  //阻止默认行为
  document.body.ondrop = function (event) {
     event.preventDefault();
     event.stopPropagation();
  };
  //列表行拖拽后顺序数组
  this.rowDrop();
},
    
methods: {
  //表格行拖拽
  rowDrop() {
    //获取表格对象
    const tbody = document.querySelector('#tableRowDrop tbody');
    const _this = this;  //(注意此处引用)
    Sortable.create(tbody, {
        onEnd({ newIndex, oldIndex }) {
           const currRow = _this.tables.splice(oldIndex, 1)[0];
           _this.tables.splice(newIndex, 0, currRow);
        }
        
        //保存列表拖拽后顺序
        _this.rowSortNew = []; //每次列表拖拽前,清空上次数据
        for(let i in _this.tables){//多个对象需遍历赋值
            _this.rowSortNew.push(_this.tables[i]['id']);
        }
        //列表拖拽后顺序
        _this.updateTableSort(_this.rowSortNew);
    })
  },
      
  //列表拖拽后顺序
  updateTableSort(rowSortNew){
    //控制台输出对比前后顺序  
    console.log('列表拖拽前顺序id数组:'+this.rowSortOld);
    console.log('列表拖拽后顺序id数组:'+rowSortNew);
    const formData = new FormData();
    //此处封装便于传递给后台
    formData.append('rowSortOld',JSON.stringify(this.rowSortOld));
    formData.append('rowSortNew',JSON.stringify(rowSortNew));
  },
  
  //获取表格渲染数据
  getList() {
    apiGet(this, this.url).then((res) => {
       this.tables = res.data;
       //保存列表拖拽前顺序id(注:此ID为列信息中的ID,多个对象需遍历赋值)
       for(let i in res.data){
           this.rowSortOld.push(res.data[i].id);
       }
    });
  }
}

</script>

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Sortablejs实现vue项目表格拖动排序 的相关文章

  • 为什么 lodash 将我的数组转换为对象?

    我是 lodash 的新手 创建了一个函数 该函数从值为 null 或空白的对象中删除键 但是当我传递包含某些部分作为数组的对象时 它会删除数组并将其转换为对象 下面是我尝试过的代码 mixin removeFalsies this rem
  • 节点异步循环 - 如何使该代码按顺序运行?

    我知道有几个关于此的帖子 但根据我发现的那些帖子 这应该可以正常工作 我想在循环中发出 http 请求 并且不希望循环迭代 直到触发请求回调 我正在使用异步库 如下所示 const async require async const req
  • 如何限制 Chrome 中的最大文本区域宽度和高度或如何禁用文本区域调整大小

    Chrome 允许通过在右下角添加文本区域来调整文本区域的大小 但有时这种移动可能会破坏页面的设计 所以我想知道如何限制该操作的最大和最小宽度 即如何完全禁用该功能和thml javascript css在页面上 您可以使用 resize
  • 使用ajax发送表单数据

    我想用 ajax 以表单形式发送所有输入 我有一个这样的表单
  • 在设置后用 Javascript 替换 'var' css 属性

    我有一个元素 其上设置了 var 属性 如下所示 div class divwithbackground div CSS divwithbackground after background image var page header se
  • ECMAScript 6 类中的 getter 和 setter 有何用途?

    我对 ECMAScript 6 类中 getter 和 setter 的意义感到困惑 什么目的 下面是我参考的一个例子 class Employee constructor name this name name doWork return
  • Sequelize 关联 - 请改用 Promise 风格

    我正在尝试将 3 张桌子连接在一起Products Suppliers and Categories然后排SupplierID 13 我读过了如何在sequelize中实现多对多关联 https stackoverflow com a 25
  • 为什么人们将自己的自定义/用户函数添加到 jQuery 对象中? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我见过人们将自己的自定义 用户功能添加到jQuery目的 例如 myUserFunc function regular JS code 你为什么
  • Durandal SPA 与打字稿有关的问题

    我使用 TypeScript 1 8 将我的 durandal SPA 应用程序从 VS 2012 更新到 VS 2015 它将生成 JavaScript ECMA5 我解决了所有构建错误 但我无法修复一个名为 return 语句只能在函数
  • 如何使用 JavaScript 上传文件而不进行回发?

    我正在 ASP NET 中进行文件上传 我用了
  • 从本地 html/javascript 网站插入 mySQL 数据库

    我正在尝试做什么 我的程序的目的是插入数据local HTML JS网站变成online 非本地 mySQL数据库 到目前为止我尝试过的 我试图用来实现此目的的原始方法是让我的本地网站使用 javascript 通过在线发布数据PHP文件
  • Nodejs 异步 Promise 队列

    我需要使用速率受限的 API 例如 我一秒钟只能进行 10 个 API 调用 因此我需要等待当前秒结束才能进行另一个 API 调用 为了实现这一目标 我想创建一个可以自行管理的异步队列 它的主要功能是让我向队列添加一个新的 Promise
  • Lodash _.hasIntersection?

    我想知道两个或多个数组是否有共同的项目 但我不在乎这些项目是什么 我知道 lodash 有一个 intersection方法 但我不需要它来遍历每个数组的每个项目 相反 我需要类似的东西 hasIntersection一旦找到第一个常见的出
  • Python 中的 Firebase 身份验证时出现 KeyError:“databaseURL”

    相信你做得很好 我是 firebase 的新手 正在尝试进行用户身份验证 我已经安装了pyrebase4并在firebase控制台上创建了一个项目 我还启用了使用 电子邮件和密码 登录并尝试连接我的应用程序 下面是我正在尝试的代码 impo
  • 如何在 Node.js 中打开 Windows-1255 编码文件?

    我有一个 Windows 1255 希伯来语 编码的文件 我希望能够在 Node js 中访问它 我尝试使用打开文件fs readFile 它给了我一个Buffer我无能为力 我尝试将编码设置为Windows 1255 但这没有被识别 我还
  • 鼠标输入时反应显示按钮

    我有一个反应组件 它包含如下方法 mouseEnter console log this is mouse enter render var album list const albums this props if albums user
  • 使用 NodeJS 创建 YouTube 播放列表

    我正在尝试使用 NodeJS 服务器创建 YouTube 播放列表 我已按照 Oauth 的 NodeJS 快速入门说明进行操作 如以下链接所示 https github com youtube api samples blob maste
  • 使用 jQuery 的 ajax 方法以 blob 形式检索图像

    我最近问了另一个 相关 问题 这导致了这个后续问题 提交数据而不是输入表单的文件 https stackoverflow com questions 17643142 submitting data instead of a file fo
  • JS - 如何将图像对象变成灰度并显示它

    基本上 当单击按钮时 它会告诉移动设备转到相机 一旦相机拍照 它就会给我图像数据 它被称为数据 URL 吗 这是我处理它的代码 var imagesrc data image jpeg base64 imageData var myimag
  • 数组长度未定义[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我试图按如

随机推荐

  • 【论文解读】滴滴智能派单-KDD2018 Large-Scale Order Dispatch in On-Demand Ride-Hailing

    Large Scale Order Dispatch in On Demand Ride Hailing Platforms A Learning and Planning Approach 一 简介 基于大量历史数据 构建一个大Q表 用于
  • ISP、IAP、DFU和bootloader

    这是嵌入式开发中常用的几个专业术语 其诞生的背景和其具体作用大概如下 在很久很久以前 那是8051单片机流行的时代 做单片机开发都需要一个专用工具 就是单片机的编程器 或者叫烧写器 说 烧 写一点不为过 当年的经典芯片AT89C51在编程时
  • selenium用法详解【从入门到实战】【Python爬虫】【4万字】

    跳转文末 获取实战源码与作者联系方式 共同学习进步 文章目录 简介 selenium安装 安装浏览器驱动 确定浏览器版本 下载驱动 定位页面元素 打开指定页面 id 定位 name 定位 class 定位 tag 定位 xpath 定位 c
  • 2023年工业信息安全技能大赛—岗位技能锦标赛通知

    点击星标 即时接收最新推文 一 锦标赛背景 为加速推进数字化 智能化 5G 大数据等新一代信息技术与制造业深度融合 提升工业信息安全行业学习人员的技能水平 结合装备制造产业发展需要 促进装备制造产业高质量发展 加快培养工业信息安全技能人才
  • SM.MS图床api调用

    第一步 注册sm ms账号 并获取API Access 第二步 HTML结构 我用的是vue
  • upload-labs大详解

    pass1 上传一个php一句话文件 记得改成php格式 发现不允许上传php类型的 只能上传jpg gif pngl的我们打算用burp抓包 先上传jpg的 然后用burp改成php的 放包后 找到它的存储位置 用蚁剑连接 成功连接 pa
  • python基础笔记(二)_pandas的基础语法

    数据分析工具包 Pandas 基础序列 一维数组 Series Series 是带有标签的一维数组 可以保存任何数据类型 轴标签统称为索引 index查看series索引 类型为rangeindex values查看series值 类型是n
  • Mysql之一行转多行(列转行)--- help_topic

    用到的知识点 substring index str delim count str 要处理的字符串 delim 分隔符 count 计数 例子 str www wikibt com substring index str 1 结果是 ww
  • Java实现比较APP版本号大小

    实现代码如下 比较APP版本号的大小 p 1 前者大则返回一个正数 2 后者大返回一个负数 3 相等则返回0 param version1 app版本号 param version2 app版本号 return int public sta
  • 如何利用ChatGPT写毕业论文

    如何利用ChatGPT写毕业论文 ChatGPT是什么 利用ChatGPT写毕业论文的步骤 1 准备数据 2 训练模型 3 生成论文 4 检查论文 总结 地址 ChatGPT是什么 ChatGPT是一个基于GPT 2模型的开源聊天机器人 它
  • Fabric开发(三)ubuntu下启动Fabric2.2.0网络,并测试一个Fabcar的demo

    前面几章内容 我们已经详细讲解过fabric 1 4 3网络搭建 fabric2 2 0本地编译 今天 我们在fabria2 2 0版本中 启动一个网络 并用SDK调用一个fabcar 的demo 体验一下fabric新版本 我们今天用No
  • 华为云AI视觉开发平台--HiLens使用中如何导入(转换)模型?

    HiLens是华为云的端云协同多模态AI开发应用平台 提供简单易用的开发框架 开箱即用的开发环境 丰富的AI技能市场和云上管理平台 对接多种端侧计算设备 支持视觉及听觉AI应用开发 AI应用在线部署 海量设备管理等 华为HiLens由AI推
  • 玩转Mixly – 9、Arduino AVR编程 之 函数

    以下内容源自Mixly官方技术文档 https mixly readthedocs io zh CN latest Arduino AVR 08Functions html 函数 在函数部分 主要分为定义函数和执行函数 需注意 当用户自定义
  • PHP自学教程之PHP加密函数

    数据加密的基本原理就是对原来的明文的文件或数据按某种算法进行处理 使其成为不可读的一定代码 通常称为 密文 通过这样的途径来达到保护数据不被非法窃取和阅读目的 PHP加密的函数主要有 crypt md5 和sha1 函数 还有加密的拓展库M
  • REDIS09_LBS出现背景、GEO算法介绍、算法步骤、剖析、邻近网格位置推算

    文章目录 LBS出现的背景 重新认识经纬度 感性认识GeoHash Geohash算法介绍 Geohash算法步骤 更深入剖析GeoHash 邻近网格位置推算 LBS出现的背景 移动互联网时代LBS应用越来越多 所在位置附近三公里的药店 交
  • Spring Boot + Spring Cloud + Spring Cloud Alibaba 版本对照表

    Json 详细数据 Spring Cloud 版本对应文档 Spring Cloud Alibaba 版本对应文档 spring cloud dependencies 版本 spring cloud 版本 spring boot 版本 sp
  • 4,使用 OpenCV 进行边缘检测

    效果微信扫码查看 原图 sobel X sobel Y sobel XY canny边缘检测 边缘检测是一种图像处理技术 用于识别对象的边界 边缘 或图像内的区域 边缘是与图像相关的最重要的特征之一 我们通过图像的边缘了解图像的底层结构 因
  • 第1组 团队展示

    1 组长博客链接 组长博客 2 团队项目描述 借呗 想借就借无需等待的资源管理平台 3 队员风采 林睿 风格 日常迷糊 喜欢慵懒随性 擅长的技术 还没有可以说得上擅长的技术 会基础的c和c 一点点python 编程的兴趣 想好好学pytho
  • 今日头条最新signature

    最新今日头条sign加密更新了 抽时间看了看 比上次的加密难度增加了许多 接下来讲下加密流程 今日头条获取下一页面的数据时断点位置 我们只需要找到window byted acrawler的生成就可以了 用fiddler拦击服务器返回的的r
  • Sortablejs实现vue项目表格拖动排序

    1 简介 Sortable js是一款优秀的js拖拽库 支持ie9及以上版本ie浏览器和现代浏览器 也可以运行在移动触摸设备中 不依赖jQuery 支持 Meteor AngularJS React Vue Knockout框架和任何CSS