sortable+element 實現(xiàn)表格行拖拽的方法示例
背景
1、vue項目中的表格需要實現(xiàn)行拖拽功能
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組件,用以實現(xiàn)拖拽功能
引用自官方文檔:Vue drag-and-drop component based on Sortable.js
參考地址: https://github.com/SortableJS/Vue.Draggable
遇到的問題
在使用vuedraggable的過程中,發(fā)現(xiàn)必須用<draggable></draggable>包裹拖動項的父級元素,但是element組件庫對table進行封裝,無法直接包裹拖動項(即tr)的父級元素
如果你的項目中,表格未使用組件庫,實現(xiàn)可以參考 http://www.dhdzp.com/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="主機名" :min-width="150" show-overflow-tooltip> </el-table-column> </el-table>
步驟四 : 將拖拽元素設置為要拖動項的父級元素
mounted() {
// 表格中需要實現(xiàn)行拖動,所以選中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)
}
})
}
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
vue3 reactive函數(shù)用法實戰(zhàn)教程
reactive是Vue3中提供實現(xiàn)響應式數(shù)據(jù)的方法,reactive的用法與ref的用法相似,也是將數(shù)據(jù)變成響應式數(shù)據(jù),當數(shù)據(jù)發(fā)生變化時UI也會自動更新,這篇文章主要介紹了vue3 reactive函數(shù)用法,需要的朋友可以參考下2022-11-11
vue中props賦值給data出現(xiàn)的問題及解決
這篇文章主要介紹了vue中props賦值給data出現(xiàn)的問題及解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-10-10
vue3+el-select實現(xiàn)觸底加載更多功能(ts版)
這篇文章主要給大家介紹了基于vue3和el-select實現(xiàn)觸底加載更多功能,文中有詳細的代碼示例,感興趣的同學可以借鑒參考下2023-07-07
vue基于mint-ui實現(xiàn)城市選擇三級聯(lián)動
這篇文章主要為大家詳細介紹了vue基于mint-ui實現(xiàn)城市選擇三級聯(lián)動,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-04-04
django使用channels2.x實現(xiàn)實時通訊
這篇文章主要介紹了django使用channels2.x實現(xiàn)實時通訊,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-11-11

