vue拖拽插件vuedraggable

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 15:07   11   0

最近有项目需要用到拖拽改变树结构,给大家推荐vue的插件库vuedraggable(gitHub:https://github.com/SortableJS/Vue.Draggable
),这个插件是基于sortable.js(gitHub:https://github.com/RubaXa/Sortable,所以这个options里面的配置,和sortable.js是一样的。

下面是一个简单的例子:

首先安装插件:npm install vuedraggable -S

使用具体代码片段:

<template>
  <div class="index-wrap">
    <div class="index-left">
      <div class="index-left-block lastest-news">
        <h2>拖动的块块</h2>
        <ul>
          <draggable v-model="newsList" @update="datadragEnd" :options = "{animation:500}">
            <transition-group>
                <li v-for="item in newsList" :key="item.id" class = "drag-item">
                  <div class="new-item">{{ item.title }}</div>
                </li>
            </transition-group>
          </draggable>
        </ul>
      </div>
    </div>
  </div>
</template>

<script>
//引入插件
import draggable from 'vuedraggable'
export default {
//注册组件
  components: {
    draggable
  },
  created: function () {
    this.$http.get('api/getNewsList')
    .then((res) => {
      this.newsList = res.data
    }, (err) => {
      console.log(err)
    })
  },
   mounted () {
         //为了防止火狐浏览器拖拽的时候以新标签打开
            document.body.ondrop = function (event) {
                event.preventDefault();
                event.stopPropagation();
            }
        },
  data () {
    return {
      newsList: []
      }
    }
  },
  methods:{
    datadragEnd (evt) {
      evt.preventDefault();
      console.log('拖动前的索引 :' + evt.oldIndex)
      console.log('拖动后的索引 :' + evt.newIndex)
      //打印出新的树结构
      console.log(this.newsList);
    }
  }
}
</script>

<style scoped>
.drag-item{
        width: 200px;
        height: 50px;
        line-height: 50px;
        margin: auto;
        position: relative;
        background: rgb(118, 226, 240);
        margin-top:20px;
    }
</style>

效果图:

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP