Vue项目使用Sortable.js实现拖拽功能

想了解更多-可前往 Sortable.js官网 查看组件属性及参数

安装组件(我这里使用的是NPM安装)
 npm install sortablejs --save
在需要使用拖拽功能的页面中使用(完整功能代码)
<div class="tag_box">
    <div class="drag"  v-for="(item,index) in taglist" :key="index">{{item.name}}</div>
</div>
import Sortable from "sortablejs";
export default {
    data() {
        return {
            taglist:[
                {
                    id:1,
                    name:'型号'
                },{
                    id:2,
                    name:'产牌'
                },{
                    id:3,
                    name:'价格'
                },{
                    id:4,
                    name:'批次'
                },{
                    id:6,
                    name:'有效期'
                },{
                    id:5,
                    name:'描述'
                }]
        }
    },
    methods: {
        async rowDrop() {
            const that = this
            const tbody = document.querySelector(".tag_box");//绑定对应拖拽的父元素
            const sortable = Sortable.create(tbody, {
                animation: 150, //动画
                disabled: false, // 拖拽不可用? false 启用(刚刚渲染表格的时候起作用,后面不起作用)
                handle: ".drag", //指定拖拽目标,点击此目标才可拖拽元素(此例中设置操作按钮拖拽)
                chosenClass: "sortable-chosen",
                filter: ".disabled", //指定不可拖动的类名(el-table中可通过row-class-name设置行的class)
                onEnd: evt => {  //监听拖动结束事件
                    let proId = that.id; //就是我们上面获取到当前行的id值
                    console.log(evt.oldIndex) //当前行的被拖拽前的顺序
                    console.log(evt.newIndex) //当前行的被拖拽后的顺序
                    // 这里就可以写我们需要传给后台的逻辑代码
                    // that.changlistsort(evt.oldIndex, evt.newIndex)
                }
            })
        },
    },
    mounted() {
        this.rowDrop()
    },
    components: {
        Sortable
    }
}

最终效果如下

一、拖拽前

拖拽前

一、拖拽中

拖拽中

一、拖拽后

拖拽后

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要在Vue2中使用Sortable.js实现两个el-table之间的树形结构拖拽功能,可以按照以下步骤进行操作: 1. 安装Sortable.jsVue-Sortable插件: ```bash npm install sortablejs vue-sortable ``` 2. 在Vue组件中引入并使用Vue-Sortable插件: ```vue <template> <div> <el-table :data="treeData1" :row-key="row => row.id" ref="table1" > <!-- 表格列定义 --> </el-table> <el-table :data="treeData2" :row-key="row => row.id" ref="table2" > <!-- 表格列定义 --> </el-table> </div> </template> <script> import Sortable from 'sortablejs'; import { VueSortable } from 'vue-sortable'; export default { components: { VueSortable }, data() { return { treeData1: [ // 表格数据 ], treeData2: [ // 表格数据 ] }; }, mounted() { this.$nextTick(() => { this.makeTablesSortable(); }); }, methods: { makeTablesSortable() { Sortable.create(this.$refs.table1.$el, { group: 'table', animation: 150, onEnd: this.onTableDragend }); Sortable.create(this.$refs.table2.$el, { group: 'table', animation: 150, onEnd: this.onTableDragend }); }, onTableDragend(event) { const sourceTable = event.from === this.$refs.table1.$el ? 'table1' : 'table2'; const targetTable = event.to === this.$refs.table1.$el ? 'table1' : 'table2'; const sourceData = this[sourceTable]; const targetData = this[targetTable]; // 根据event对象中的信息,更新sourceData和targetData的顺序 } } }; </script> ``` 在上面的示例代码中,我们使用Vue-Sortable插件将Sortable.js应用于el-table。通过在mounted钩子函数中调用makeTablesSortable方法,我们创建了两个可拖拽Sortable实例,并将其应用于el-table组件。在onEnd回调函数中,我们可以根据拖拽事件的信息来更新sourceData和targetData的顺序,从而实现树形结构的拖拽功能。 请注意,上述代码仅提供了一个基本的示例,具体的更新逻辑需要根据你的业务需求来实现。 希望以上信息对你有所帮助!如果有任何问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Frontend-Arway

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值