VueDraggable的安装与使用

1. 安装

npm i -S vuedraggable

或者

yarn add vuedraggable

2. 入门示例

2.1. 页面引入

import draggable from "vuedraggable"

2.2. 注册组件

  components: {
     draggable
  },

2.3. 使用

<template>
  <div style="height: 500px; width: 500px; border: 1px solid red; position: relative;">
    <draggable v-model="myArray" v-bind="dragOptions">
      <transition-group type="transition" name="flip-list">
        <div class="item-class" v-for="element in myArray" :key="element.id">{{ element.name }}</div>
      </transition-group>
    </draggable>
    <div>123</div>
    <draggable v-model="myArray2" v-bind="dragOptions">
      <transition-group>
        <div class="item-class" v-for="element in myArray2" :key="element.id">{{ element.name }}</div>
      </transition-group>
    </draggable>
  </div>
</template>

<script>
export default {
  name: "VueDraggable",
  computed: {
    dragOptions() {
      return {
        animation: 200,
        group: "description",
        disabled: false,
        ghostClass: "ghost"
      };
    }
  },
  data() {
    return {
      myArray: [
        {id: 1, name: 'name1'},
        {id: 2, name: 'name2'},
        {id: 3, name: 'name3'}
      ],
      myArray2: [
        {id: 4, name: 'name4'}
      ],

    }
  },
  methods: {
    addPeople() {}
  }
}
</script>

<style scoped>
.item-class {
  background-color: white;
  margin: 2px 0;
  line-height: 36px;
  padding: 8px;
}
.ghost {
  border: 1px blue solid;
}

.flip-list-move {
  transition: transform 0.5s;
}
.no-move {
  transition: transform 0s;
}
</style>

到此,基本上能跑起来看到效果了

3. 配置

这里面的很多配置是需要参考SortableJS的,这里主要介绍几个常用的。

  • value(这个在使用的时候是以v-model的形式)
    draggable关联的数组数据,一般后面会用v-for来进行遍历展示
  • list
    这个跟value的作用差不多,唯一的区别就是使用list的时候,数据的操作是使用的splice方法,使用value的 时候是无感的,不知道这里对不对,把官网的贴一下:

    The main difference is that list prop is updated by draggable component using splice method, whereas value is immutable.

  • options
    配置项,里面的内容比较多,暂时先列一些常用的,后续再更新
    • group(vuedraggable提供了一个单独的配置参数,可以单独写在外面)
      • name:设置组的名称,如果你有两个draggable,需要相互拖拽,这个group的那么需要一致才可以
      • pull:true|false|["foo", "bar"]|'clone'|function,表示能够从list中移出的配置,clone为复制一个,而不是 移动,一个数组表示只能移除name在数组中的,默认的值为true
      • put:true|false|["foo", "bar"]|function,表示元素是否能被加入到list中,或者是只有给定数组中的元素才可以被添加进来
      • handle:指定一个拖拽的句柄,通常是一个class,就是当鼠标有移动到这个class的元素上时才能进行拖拽
      • animation:拖动的动画时长,在同一个draggable中有效,为0的时候表示没有动画效果
      • sort:true|false设置是否能排序,false的话就没有排序的效果,表面上看组内就是没有拖动后的结果,如果是两组的情况,默认都是放到最后一个
      • delay:定义鼠标选中列表单元可以开始拖动的延迟时间
      • disabled:控制draggable是否可用的一个开关
      • filter:定义哪些列表单元不能进行拖放,可设置为多个选择器,中间用“,”分隔
      • draggable:定义哪些列表单元可以进行拖放
      • ghostClass:当拖动列表单元时会生成一个副本作为影子单元来模拟被拖动单元排序的情况,此配置项就是来给这个影子单元添加一个class,我们可以通过这种方式来给影子元素进行编辑样式
      • chosenClass:当选中列表单元时会给该单元增加一个class
      • forceFallback:boolean 如果设置为true时,将不使用原生的html5的拖放,可以修改一些拖放中元素的样式等
      • fallbackClass:当forceFallback设置为true时,拖放过程中鼠标附着单元的样式
      • scroll:boolean 默认为true,当排序的容器是个可滚动的区域,拖放可以引起区域滚动
      • onChoose:列表单元被选中的回调函数
      • onUnchoose:元素未被选中的时候(从选中到未选中)
      • onStart:列表单元拖动开始的回调函数
      • onEnd:列表单元拖放结束后的回调函数
      • onAdd:列表单元添加到本列表容器的回调函数
      • onUpdate:列表单元在列表容器中的排序发生变化后的回调函数
      • onSort:列表的任何更改都会触发
      • onRemove:列表元素移到另一个列表容器的回调函数
      • onFilter:试图选中一个被filter过滤的列表单元的回调函数
      • onMove:当移动列表单元在一个列表容器中或者多个列表容器中的回调函数
      • onClone:当创建一个列表单元副本的时候的回调函数
      • onChange:拖拽元素改变位置的时候
  • tag
    draggable渲染后的标签,默认是div,可以通过这里自定义

后续再更新

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,284评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,115评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,614评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,671评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,699评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,562评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,309评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,223评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,668评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,859评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,981评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,705评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,310评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,904评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,023评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,146评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,933评论 2 355

推荐阅读更多精彩内容