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://m.fzitv.net/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)文章
手把手教你搭建一個(gè)vue項(xiàng)目的完整步驟
身為入行未深的小白前端,不斷的學(xué)習(xí)是我們不可丟失的習(xí)慣,前端流行的框架也是層出不窮,vue在眾多框架中脫穎而出,下面這篇文章主要給大家介紹了關(guān)于搭建一個(gè)vue項(xiàng)目的完整步驟,需要的朋友可以參考下2022-07-07
vue3 reactive函數(shù)用法實(shí)戰(zhàn)教程
reactive是Vue3中提供實(shí)現(xiàn)響應(yīng)式數(shù)據(jù)的方法,reactive的用法與ref的用法相似,也是將數(shù)據(jù)變成響應(yīng)式數(shù)據(jù),當(dāng)數(shù)據(jù)發(fā)生變化時(shí)UI也會(huì)自動(dòng)更新,這篇文章主要介紹了vue3 reactive函數(shù)用法,需要的朋友可以參考下2022-11-11
vue中props賦值給data出現(xiàn)的問(wèn)題及解決
這篇文章主要介紹了vue中props賦值給data出現(xiàn)的問(wèn)題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-10-10
vue3+el-select實(shí)現(xiàn)觸底加載更多功能(ts版)
這篇文章主要給大家介紹了基于vue3和el-select實(shí)現(xiàn)觸底加載更多功能,文中有詳細(xì)的代碼示例,感興趣的同學(xué)可以借鑒參考下2023-07-07
vue基于mint-ui實(shí)現(xiàn)城市選擇三級(jí)聯(lián)動(dòng)
這篇文章主要為大家詳細(xì)介紹了vue基于mint-ui實(shí)現(xiàn)城市選擇三級(jí)聯(lián)動(dòng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-04-04
django使用channels2.x實(shí)現(xiàn)實(shí)時(shí)通訊
這篇文章主要介紹了django使用channels2.x實(shí)現(xiàn)實(shí)時(shí)通訊,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-11-11
vue項(xiàng)目使用uniapp生成app的全過(guò)程
這篇文章主要介紹了vue項(xiàng)目使用uniapp生成app的全過(guò)程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-10-10

