因为项目一开始用的jquery,所以当时找的拖拽排序插件是jquery-ui。然后最近想着是不是也可以用vue来做拖拽排序,前期找了几个,但是好像是不支持v2.0的,然后在思否刚好看到一篇文章,也是讲拖拽排序组件的,然后自己就跟着弄下来试了试。

安装

npm install awe-dnd --save

main.js

import VueDND from 'awe-dnd'

Vue.use(VueDND)

sortable.vue

<template>
    <div class="color-list">
      <div 
          class="color-item" 
          v-for="color in colors" v-dragging="{ item: color, list: colors, group: 'color' }"
          :key="color.text"
      >{{color.text}}</div>
    </div>
</template>

<script>
export default {
    data () {
        return {
            colors: [{
                text: "Aquamarine"
            },  {
                text: "Skyblue"
            }, {
                text: "Burlywood"
            }]
        }
    },
    //这里挺重要的,因为我们一般排序完要重新提交排序后的数据给后台保存,以便下一次安装我们所需要的顺序显示,这里的list就可以帮我们做到这一点,但是我们需要给数据添加一个uniqueId标志。然后在排序完后或者列表对应的顺序和uniqueId提交给后台,我也不知道我说的咋样。
    mounted () {
        this.$dragging.$on('dragged', ({ value }) => {
          console.log(value.item)
          console.log(value.list)
          console.log(value.group)
        })
    }
}
</script>
<style>
    .color-item{
        border:1px solid #f1f1f1;
        padding:10px 5px;
        margin:5px 0;
        border-radius: 4px;
    }

</style>

  排序完后的操作挺重要的,因为我们一般排序完要重新提交排序后的数据给后台保存,以便下一次安装我们所需要的顺序显示,这里的list就可以帮我们做到这一点,但是我们需要给数据添加一个uniqueId标志。然后在排序完后或者列表对应的顺序和uniqueId提交给后台,我也不知道我说的你们能理解吗,反正你们也可以打印出来看看。

效果
这里写图片描述

参考可任意拖动排序vue组件

Logo

前往低代码交流专区

更多推荐