拖拽的实现:
1、设置table的ref属性,用于找到该组件;同时请设置key属性,负责会出现很复杂的问题。
<el-table ref="practice" :key="keys" :data="myArray">
<el-table-column label="name" prop="name" />
</el-table>
2、下载sortablejs包,并导入,
import Sortable from 'sortablejs'
3、编写拖拽初始化函数(需要在初始化的时候调用,最好是在mounted阶段):
const el = this.$refs.practice.$el.querySelectorAll('.el-table__body-wrapper> table > tbody')[0] //获取table的行,设置为可拖拽
const _this = this
this.sortables1 = Sortable.create(el, {
setData: function(dataTransfer) {
dataTransfer.setData('Text', '')
},
onEnd: ({newIndex,oldIndex}) => {
_this.myArray.splice(newIndex, 0, _this.myArray.splice(oldIndex, 1)[0])
_this.keys = Math.random().toString() //用于改变key,使得视图重新渲染
_this.$nextTick(() => {
重新初始化
_this.sortable()
})
}
})
vue中,element-ui的table实现拖拽,同时踩一个深坑:拖拽的时候,数据和页面显示的不一样。
最新推荐文章于 2024-05-26 16:39:01 发布