美文网首页
vue table表头拖放拖拽功能

vue table表头拖放拖拽功能

作者: 一只喵de旅行 | 来源:发表于2020-07-03 12:12 被阅读0次

    网上找了很多方法,代码看的头疼,最后还是自己写了一套简单的方法。

    HTML:

    <table>

                    <thead class="el-table__header-wrapper has-gutter">

                        <tr>

                            <th v-for="(columns, index) in tablesColumns" :key="index" draggable='true' @dragstart="dragstartEvent(index)" @dragenter="dragenterEvent($event,columns)" @dragend="dragendEvent($event,columns)">

                                <label class="cell">{{columns.name}}</label>

                            </th>

                        </tr>

                    </thead>

                    <tbody class="el-table__body">

                        <tr>

                            <td></td>

                        </tr>

                    </tbody>

                </table>

    JS:

    tablesColumns:[{

                    id:0,

                    name:'债券代码'

                },{

                    id:1,

                    name:'买卖方向'

                },{

                    id:2,

                    name:'量(万元)'

                },{

                    id:3,

                    name:'收益率'

                }]

    //拖动开始 --- 拿到当前目标对象的索引

            dragstartEvent(index) {

                this.dragStartIndex = index 

            },

            //拖动过程 --- 拿到结束后的对象

            dragenterEvent(ev, col) {

                this.dragEndColumn = col

            },

            //拖动结束

            dragendEvent(ev, col) {

                this.tablesColumns.splice(this.dragEndColumn.id,1,...this.tablesColumns.splice(this.dragStartIndex, 1 , this.tablesColumns[this.dragEndColumn.id])) // 这里用到了 数组对象的交换,id其实就是 索引下标

                for(let i=0;i<this.tablesColumns.length;i++){ // 重新把id 整理一遍

                    this.tablesColumns[i].id = i

                }

            }

    结束拖动 用数组对象交换,真的是很容易就写好了(百度上 查到的 都是 很多判断什么的,最后拖动还有问题,所以最后作者自己写了,测试下来很完美。哈哈哈)

    最后效果图 :

    相关文章

      网友评论

          本文标题:vue table表头拖放拖拽功能

          本文链接:https://www.haomeiwen.com/subject/biqsqktx.html