sortable+element 实现表格行拖拽的方法示例

37 篇文章 3 订阅
15 篇文章 0 订阅


一、背景

  1. vue项目中的表格需要实现行拖拽功能
  2. 表格使用element组件库中el-table

二、方案介绍

Sortable.js

介绍:Sortable.js是一款轻量级的拖放排序列表的js插件

引用自官方文档:No jQuery required. Supports Meteor, AngularJS, React, Polymer, Vue, Knockout and any CSS library, e.g. Bootstrap.
参考地址:https://github.com/SortableJS/Sortable

vuedraggable

介绍:基于Sortable.js的vue组件,用以实现拖拽功能

引用自官方文档:Vue drag-and-drop component based on Sortable.js
参考地址:https://github.com/SortableJS/Vue.Draggable

三、解决方案

使用 sortable.js

步骤一 :安装

npm install vuedraggable

步骤二 :引入

import Sortable from 'sortablejs';

步骤三:el-table 添加row-key属性

<el-table
 ref="filterTable"
 row-key="ip" 
 @filter-change="handlerFilterChange" 
 class="cl-table" 
 :data="resourceList" 
 v-loading="resourceListLoading" 
 stripe style="width:100%;">
 <el-table-column
   prop="name"
  label="主机名" 
  :min-width="150" 
  show-overflow-tooltip>
 </el-table-column>
 </el-table>

步骤四:将拖拽元素设置为要拖动项的父级元素

mounted() {
   // 表格中需要实现行拖动,所以选中tr的父级元素
  const table = document.querySelector('.el-table__body-wrapper tbody')
  const self = this
  Sortable.create(table, {
   onEnd({ newIndex, oldIndex }) {
    console.log(newIndex, oldIndex)
    const targetRow = self.resourceList.splice(oldIndex, 1)[0]
    self.resourceList.splice(newIndex, 0, targetRow)
   }
  })
 }
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Element Plus 是一款基于 Vue.js 的组件库,提供了丰富的 UI 组件。而 Sortable 是一个 JavaScript 库,用于实现拖拽排序的功能。可以使用 Element Plus 和 sortable.js 来实现拖拽排序的功能。 首先,你需要安装 sortable.js,可以使用 npm install sortablejs --save 或者 yarn add sortablejs 命令进安装。然后,在你的项目中引入 sortable.js,可以使用 import Sortable from 'sortablejs' 进引入。 例如,如果你使用 Vue 框架,可以在 Vue 组件中使用 sortable.js 创建可拖拽排序的功能。你可以参考 Element Plus 的文档提供的实际应用参考,在 Vuedraggable 中使用 Element Plus 组件库。 另外,你也可以使用现有的 Element Plus 组件库来实现拖拽排序的功能。可以参考文档中提供的完整实例。在使用 Element Plus 的 table 组件时,可以完全模拟 el-table 组件的样式。 具体的实现步骤如下: 1. 安装 sortable.js,可以使用 npm install sortablejs --save 或者 yarn add sortablejs 命令进安装。 2. 引入 sortable.js,可以使用 import Sortable from 'sortablejs' 进引入。 3. 根据具体需求,可以参考 Element Plus 的文档和示例代码进配置和使用。 4. 在 Vue 组件中使用 Vuedraggable 和 Element Plus 组件库,实现拖拽排序的功能。 5. 根据需要,可以在拖拽结束的事件 onEnd() 中进相应的处理。 需要注意的是,具体的 API 使用可以参考相关文档中的说明,以及参考示例代码。如有需要,你还可以查看相关文档了解更多详细信息。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [vue3 + element-plus + sortable.js实现表格拖拽](https://blog.csdn.net/weixin_60886885/article/details/129591281)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [Vue3+element-plus-table-dragable(Sortable.js)实现表格拖动排序](https://download.csdn.net/download/peking2009/85651132)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [vue3 + ts + element-plus + sortable.js实现表格拖拽](https://blog.csdn.net/yangxiaoman123/article/details/120512409)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值