table列表支持拖拽排序

有时vue项目中,列表重新拖拽排序,这里就简单讲下怎么实现…

  1. 首先需要下载依赖
    npm install sortablejs -S

Sortable.js是一款优秀的js拖拽库,支持ie9及以上版本ie浏览器和现代浏览器,也可以运行在移动触摸设备中。

  1. 在需要拖拽的页面里引用
    import Sortable from "sortablejs"

  2. 在代码table组件里加上ref属性获取元素

//这里只展示部分代码  主要是ref
 <a-table :columns="columns" :data-source="data" ref="dragTable">
 </a-table>
  1. 在mounted里去调这个拖拽的方法
  mounted() {
    this.rowDrop();
  },
/**列表支持拖拽排序**/
methods:{
   rowDrop() {
      const el = this.$refs.dragTable.$el.querySelectorAll("tbody")[0];//获取table里元素
      this.sortable = Sortable.create(el, {
        ghostClass: "blue-background-class", //选中元素插入属性
        sort: true,//是否允许元素内部排序,
        handle: ".ant-table-row",
        animation: 150, //定义排序动画的时间ms
        onEnd: ({ newIndex, oldIndex }) => {
          if (oldIndex == newIndex) return;
          const targetRow = 
          this.scenceData.splice(oldIndex, 1)[0]; //选中的目标源对象

          this.scenceData.splice(newIndex, 0, targetRow);
          let replacedataRow = this.newScenceData.filter(
            (val, index) => index == newIndex
          )[0]; //拖拽之前,数据原来的位置的数据对象
          
           //根据上面获取的数据 根据后端的接口,传相应的数据
          //这里是调接口====,根据自己需求来写
     
        },
      });
    },
}

  1. 以上就可以实现table拖拽排序了
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现列表拖拽排序的方法有很多种,这里介绍一种基于HTML5的拖拽API实现的方法。 首先,需要用HTML的table标签创建一个表格,每行作为一个拖拽项。然后,在每个表格行中添加一个`draggable="true"`属性来启用拖拽功能。接着,给每个表格行添加`ondragstart`和`ondragover`事件处理程序。 在`ondragstart`事件处理程序中,需要设置拖拽数据(即要拖拽的行的数据)以及拖拽效果。例如: ```html <tr draggable="true" ondragstart="dragStartHandler(event)"> <td>Item 1</td> <td>Item 2</td> <td>Item 3</td> </tr> <script> function dragStartHandler(event) { // 设置拖拽数据 event.dataTransfer.setData("text/plain", event.target.innerHTML); // 设置拖拽效果 event.dataTransfer.effectAllowed = "move"; } </script> ``` 在`ondragover`事件处理程序中,需要阻止默认行为并设置拖拽效果。例如: ```html <tr draggable="true" ondragstart="dragStartHandler(event)" ondragover="dragOverHandler(event)"> <td>Item 1</td> <td>Item 2</td> <td>Item 3</td> </tr> <script> function dragOverHandler(event) { // 阻止默认行为 event.preventDefault(); // 设置拖拽效果 event.dataTransfer.dropEffect = "move"; } </script> ``` 最后,在`ondrop`事件处理程序中,需要获取拖拽数据并重新排列表格行。例如: ```html <tr draggable="true" ondragstart="dragStartHandler(event)" ondragover="dragOverHandler(event)" ondrop="dropHandler(event)"> <td>Item 1</td> <td>Item 2</td> <td>Item 3</td> </tr> <script> function dropHandler(event) { // 阻止默认行为 event.preventDefault(); // 获取拖拽数据 const data = event.dataTransfer.getData("text/plain"); // 重新排列表格行 event.target.innerHTML = data; } </script> ``` 以上代码仅为示例,具体实现还需要根据实际情况进行调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值