Vue+ElementUI技巧分享:结合Sortablejs实现表格行拖拽_vue element-ui 实现表格拖拽

总结

秋招即将开始,校招的朋友普遍是缺少项目经历的,所以底层逻辑,基础知识要掌握好!

而一般的社招,更是神仙打架。特别强调,项目经历不可忽视;几乎简历上提到的项目都会被刨根问底,所以项目应用的技术要熟练,底层原理必须清楚。

这里给大家提供一份汇集各大厂面试高频核心考点前端学习资料。涵盖 HTML,CSS,JavaScript,HTTP,TCP协议,浏览器,Vue框架,算法等高频考点238道(含答案)

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

资料截图 :

高级前端工程师必备资料包

  <el-table-column prop="createTime"
                   label="日期"
                   width="180"></el-table-column>
  <el-table-column prop="event"
                   label="事件"
                   width="180"></el-table-column>
  <!-- 其他列 -->
</el-table>

这段代码演示了如何在 Vue 组件中结合 Element UI 的表格和 `sortablejs` 来实现行拖拽功能。主要步骤包括初始化表格数据、配置 `sortablejs` 来启用拖拽,并在拖拽结束时更新数据和同步到服务器。通过这种方式,您可以创建一个交互式且用户友好的表格界面。


## 代码说明


### 1. 引入依赖和组件结构




* `<template>` 部分定义了组件的 HTML 结构。这里使用了 Element UI 的 `<el-table>` 组件来创建表格。
* `:data="planTableData"` 是一个动态属性(Vue 的 v-bind 简写),它绑定 `planTableData` 数组到表格的数据源。
* `row-key="id"` 用于指定每行数据的唯一键值,这里假设每个数据项都有一个唯一的 `id` 字段。该属性是必填的,否则表格无法立即显示排序后的结果。
* `import Sortable from 'sortablejs'` 引入 `sortablejs` 库,它用于实现拖拽功能。
* `import axios from 'axios'` 引入 `axios` 库,用于发送 HTTP 请求。


### 2. 组件数据和生命周期



export default {
name: ‘PlanTableDraggable’,
data () {
return {
planTableData: []
}
},
created () {
this.planTableData = [/* 初始数据 */]
},
mounted () {
this.KaTeX parse error: Expected '}', got 'EOF' at end of input: …onst el = this.el.querySelector(‘.el-table__body-wrapper tbody’)
Sortable.create(el, {/* 配置项 */})
})
},
// …
}


* `data()` 函数返回组件的响应式数据,这里是 `planTableData` 数组,用于存储表格数据。
* `created()` 生命周期钩子用于初始化 `planTableData`。这里可以替换为从服务器加载数据。
* `mounted()` 钩子在组件被挂载到 DOM 后执行。这里使用 `this.$nextTick` 确保所有的子组件也被渲染。
* 在 `mounted` 内部,我们通过 `this.$el.querySelector` 获取表格的 DOM 元素,并使用 `Sortable.create` 初始化拖拽功能。


### 3. 实现拖拽功能



Sortable.create(el, {
onEnd: (event) => {
const { oldIndex, newIndex } = event
this.updateRowOrder(oldIndex, newIndex)
}
})


* `Sortable.create` 接受两个参数:要应用拖拽的元素和配置对象。
* `onEnd` 是一个事件处理器,当拖拽操作完成时触发。
* `event` 参数提供了拖拽操作的详情,包括原始索引 `oldIndex` 和新索引 `newIndex`。
* `this.updateRowOrder` 是一个自定义方法,用于更新数组中元素的顺序。


### 4. 更新数据和服务器同步



methods: {
updateRowOrder (oldIndex, newIndex) {
const movedItem = this.planTableData.splice(oldIndex, 1)[0]
this.planTableData.splice(newIndex, 0, movedItem)
this.updateOrderOnServer()
},
updateOrderOnServer () {
axios.post(‘/api/update-order’, { newOrder: this.planTableData })
.then(response => {
console.log(‘Order updated:’, response)
})

总结

  • 框架原理真的深入某一部分具体的代码和实现方式时,要多注意到细节,不要只能写出一个框架。

  • 算法方面很薄弱的,最好多刷一刷,不然影响你的工资和成功率😯

  • 在投递简历之前,最好通过各种渠道找到公司内部的人,先提前了解业务,也可以帮助后期优秀 offer 的决策。

  • 要勇于说不,对于某些 offer 待遇不满意、业务不喜欢,应该相信自己,不要因为当下没有更好的 offer 而投降,一份工作短则一年长则 N 年,为了幸福生活要慎重选择!!!

    开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

喜欢这篇文章文章的小伙伴们点赞+转发支持,你们的支持是我最大的动力!

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值