vue.draggable对table表格进行拖动,对表格的拖拽是比较常见的一个业务场景,本篇将实现鼠标移动到表格的第一列才可以拖动行的顺序实现排序。
handle=".move"表示鼠标放样式为move的元素上面才能拖拽。
<!--使用draggable组件-->
<div>点击第一列数字进行拖动,其他列拖拽无效</div>
<table class="itxst">
<draggable v-model="list" animation="500" force-fallback="true" handle=".move" @start="onStart" @end="onEnd" :move="checkMove">
<tr v-for="item in list" :key="item.id" >
<td style="width:50px" class="move">{{item.id}}</td>
<td style="width:250px">{{item.name}}</td>
</tr>
</draggable>
</table>
<template>
<div style="padding:10px">
<!--使用draggable组件-->
<div>点击第一列数字进行拖动,其他列拖拽无效</div>
<table class="itxst">
<draggable v-model="list" animation="500" force-fallback="true" handle=".move" @start="onStart" @end="onEnd" :move="checkMove">
<tr v-for="item in list" :key="item.id" >
<td style="width:50px" class="move">{{item.id}}</td>
<td style="width:250px">{{item.name}}</td>
</tr>
</draggable>
</table>
</div>
</template>
<style scoped>
/*定义要拖拽元素的样式*/
table.itxst {
color:#333333;
border: #ddd solid 1px;
border-collapse: collapse;
}
table.itxst th {
border: #ddd solid 1px;
padding: 8px;
background-color: #dedede;
}
table.itxst td {
border: #ddd solid 1px;
padding: 8px;
background-color: #ffffff;
}
table.itxst tr {
cursor: pointer;
}
table.itxst td.move:hover {
cursor: move;
}
</style>
<script>
//导入draggable组件
import draggable from 'vuedraggable'
export default {
//注册draggable组件
components: {
draggable,
},
data() {
return {
drag:false,
//定义要被拖拽对象的数组
list:[
{id:1,name:'www.itxst.com'},
{id:2,name:'www.jd.com'},
{id:3,name:'www.ebay.com'},
]
};
},
methods: {
checkMove(evt) {
console.log(evt)
return true;
},
//开始拖拽事件
onStart(){
this.drag=true;
},
//拖拽结束事件
onEnd() {
this.drag=false;
},
},
};
</script>