实现elementplus表格的行拖拽
时间: 2024-10-17 20:05:19 浏览: 57
Vue3+element-plus-table-dragable(Sortable.js)实现表格拖动排序
3星 · 编辑精心推荐
在 Element Plus 中实现表格的行拖拽,你可以利用其提供的 `el-table-column` 的属性 `draggable`,以及第三方库如 vue-draggable 或者直接使用官方推荐的 Vue 自带的 `v-model.sort` 模板绑定功能。以下是基本步骤:
1. 首先,在需要支持拖拽的列上设置 `draggable` 属性为 `true`,例如:
```html
<el-table-column label="操作" prop="" width="180" draggable>
<!-- 内容 -->
</el-table-column>
```
2. 如果你想手动处理拖动事件,可以添加 `@drag-end` 或 `@drag-over` 等事件监听器,比如:
```javascript
<template>
<el-table :data="tableData" @drag-end="handleDragEnd">
...
</el-table>
</template>
<script>
export default {
methods: {
handleDragEnd(e) {
// 更新数据模型,根据 e.detail 新的位置调整数据的顺序
this.tableData = this.tableData.slice().sort((a, b) => a.order - b.order);
}
},
data() {
return { tableData: ... };
}
}
</script>
```
3. 如果需要双向数据绑定,Element Plus 提供了内置排序功能,只需要在 `v-model` 上设置数组名即可自动跟踪排序:
```html
<el-table :data="tableData" :row-key="getRowKey" v-model="tableData.slice().sort()">
...
</el-table>
```
然后在 `methods` 或 `data` 中定义 `getRowKey(item)` 函数,返回每个表行的独特键值。
阅读全文