sortable+element 實(shí)現(xiàn)表格行拖拽的方法示例
背景
1、vue項(xiàng)目中的表格需要實(shí)現(xiàn)行拖拽功能
2、表格使用element組件庫(kù)中el-table
方案介紹
Sortable.js
介紹:Sortable.js是一款輕量級(jí)的拖放排序列表的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組件,用以實(shí)現(xiàn)拖拽功能
引用自官方文檔:Vue drag-and-drop component based on Sortable.js
參考地址: https://github.com/SortableJS/Vue.Draggable
遇到的問(wèn)題
在使用vuedraggable的過(guò)程中,發(fā)現(xiàn)必須用<draggable></draggable>包裹拖動(dòng)項(xiàng)的父級(jí)元素,但是element組件庫(kù)對(duì)table進(jìn)行封裝,無(wú)法直接包裹拖動(dòng)項(xiàng)(即tr)的父級(jí)元素
如果你的項(xiàng)目中,表格未使用組件庫(kù),實(shí)現(xiàn)可以參考 http://www.dbjr.com.cn/article/162648.htm
解決方案
使用 sortable.js
步驟一: 安裝
npm install vuedraggable
步驟二:引入
import Sortable from 'sortablejs'; @Component({ components: { Sortable } })
步驟三: 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="主機(jī)名" :min-width="150" show-overflow-tooltip> </el-table-column> </el-table>
步驟四 : 將拖拽元素設(shè)置為要拖動(dòng)項(xiàng)的父級(jí)元素
mounted() { // 表格中需要實(shí)現(xiàn)行拖動(dòng),所以選中tr的父級(jí)元素 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) } }) }
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
vue控制多行文字展開(kāi)收起的實(shí)現(xiàn)示例
這篇文章主要介紹了vue控制多行文字展開(kāi)收起的實(shí)現(xiàn)示例(也叫控制文字展開(kāi)隱藏),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10vue 項(xiàng)目軟鍵盤(pán)回車(chē)觸發(fā)搜索事件
這篇文章主要介紹了vue 項(xiàng)目軟鍵盤(pán)回車(chē)觸發(fā)搜索事件,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-09-09mpvue將vue項(xiàng)目轉(zhuǎn)換為小程序
這篇文章主要介紹了mpvue將vue項(xiàng)目轉(zhuǎn)換為小程序的相關(guān)資料及mpvue開(kāi)發(fā)流程,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-09-09vue 實(shí)現(xiàn)數(shù)字滾動(dòng)增加效果的實(shí)例代碼
最近做了個(gè)項(xiàng)目需要做數(shù)字滾動(dòng)增加的效果,剛開(kāi)始接到這個(gè)項(xiàng)目還真是懵了,后來(lái)發(fā)現(xiàn)實(shí)現(xiàn)代碼很簡(jiǎn)單的,下面小編給大家?guī)?lái)了vue 實(shí)現(xiàn)數(shù)字滾動(dòng)增加效果的實(shí)例代碼,需要的朋友參考下吧2018-07-07詳解使用vue腳手架工具搭建vue-webpack項(xiàng)目
本篇文章主要介紹了詳解使用vue腳手架工具搭建vue-webpack項(xiàng)目,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2017-05-05iview tabs 頂部導(dǎo)航欄和模塊切換欄的示例代碼
這篇文章主要介紹了iview tabs 頂部導(dǎo)航欄和模塊切換欄的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03Vue在原窗口與新窗口打開(kāi)外部鏈接的實(shí)現(xiàn)代碼
這篇文章主要介紹了Vue如何在原窗口與新窗口打開(kāi)外部鏈接,文中給大家提到了vue跳轉(zhuǎn)外部鏈接的實(shí)現(xiàn)代碼,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下2023-02-02