Draggable为基于Sortable.js的vue组件,用以实现拖拽功能。

特性

  • 支持触摸设备
  • 支持拖拽和选择文本
  • 支持智能滚动
  • 支持不同列表之间的拖拽
  • 不以jQuery为基础
  • 和视图模型同步刷新
  • 和vue2的国度动画兼容
  • 支持撤销操作
  • 当需要完全控制时,可以抛出所有变化
  • 可以和现有的UI组件兼容

安装

npm install vuedraggable

引入

import draggable from 'vuedraggable'

基础用法

定义一个json串 list,实现它的拖拽排序。

<draggable v-model="list">
<transition-group>
<div v-for="element in list" :key="element.id">
{{element.name}}
</div>
</transition-group>
</draggable>

属性列表

参数 说明 类型 默认值
value 用于实现拖拽的list,通常和内部v-for循环的数组为同一数组 Array null
list 效果同value的。和v-model不能共用 Array null
tag draggable 标签在渲染后展现出来的标签类型 String div
options draggable 列表配置项 Object null
emptyInsertThreshold 拖动时,鼠标必须与空的可排序对象之间的距离 Number 5
clone 返回值为true时克隆,可以理解为正常的拖拽变成了复制。当pull:'clone时的拖拽的回调函数’ Function 无处理
move 如果不为空,这个函数将以类似于Sortable onMove回调的方式调用。返回false将取消拖动操作。 Function null
componentData 用来结合UI组件的,可以理解为代理了UI组件的定制信息 Object null

注意:vuedraggable新版本废弃了options属性,建议使用v-bind属性作为配置项

options配置项

参数 说明 类型
group 用于分组,同一组的不同list可以相互拖动 String/Array
sort 定义是否可以拖拽 Boolean
delay 定义鼠标选中列表单元可以开始拖动的延迟时间 Number
disabled 定义是否此sortable对象是否可用 Boolean
animation 动画时间 单位:ms Number
handle 使列表单元中符合选择器的元素成为拖动的手柄,只有按住拖动手柄才能使列表单元进行拖动 Selector
filter 定义哪些列表单元不能进行拖放,可设置为多个选择器,中间用“,”分隔 Selector
preventOnFilter 当拖动filter时是否触发event.preventDefault() 默认触发 Boolean
draggable 定义哪些列表单元可以进行拖放 Selector
ghostClass 当拖动列表单元时会生成一个副本作为影子单元来模拟被拖动单元排序的情况,此配置项就是来给这个影子单元添加一个class Selector
chosenClass 目标被选中时添加 Selector
dragClass 目标拖动过程中添加 Selector
forceFallback 如果设置为true时,将不使用原生的html5的拖放,可以修改一些拖放中元素的样式等 Boolean
fallbackClass: 当forceFallback设置为true时,拖放过程中鼠标附着单元的样式 String
dataIdAttr data-id Selector
scroll 当排序的容器是个可滚动的区域,拖放可以引起区域滚动 Boolean
scrollFn 用于自定义滚动条的适配 Function(offsetX, offsetY, originalEvent, touchEvt, hoverTargetEl)
ScrollSensitivity 就是鼠标靠近边缘多远开始滚动默认30 Number
scrollSpeed 滚动速度 Number

事件

参数 说明 回调参数
start 开始拖动时的回调函数 function({to,from,item,clone,oldIndex,newIndex})
add 添加单元时的回调函数 function({to,from,item,clone,oldIndex,newIndex})
remove 单元被移动到另一个列表时的回调函数 function({to,from,item,clone,oldIndex,newIndex})
update 排序发生变化时的回调函数 function({to,from,item,clone,oldIndex,newIndex})
end 拖动结束时的回调函数 function({to,from,item,clone,oldIndex,newIndex})
choose 选择单元时的回调函数 function({to,from,item,clone,oldIndex,newIndex})
sort 排序发生变化时的回调函数 function({to,from,item,clone,oldIndex,newIndex})
filter 尝试选择一个被filter过滤的单元的回调函数 function({to,from,item,clone,oldIndex,newIndex})
clone clone时的回调函数 function({to,from,item,clone,oldIndex,newIndex})

插槽

页眉或页脚插槽都不能与 tarnstion-group 一起使用。

  Header

使用标题插槽在vuedraggable组件中添加不可拖动的元素。它应该与draggable选项一起使用来标记draggable元素。请注意,无论标题槽在模板中的位置如何,它总是被添加到默认槽之前。

<draggable v-model="myArray" draggable=".item">
<div v-for="element in myArray" :key="element.id" class="item">
{{element.name}}
</div>
<button slot="header" @click="addPeople">Add</button>
</draggable>

Footer

使用页脚槽在vuedraggable组件中添加不可拖动的元素。它应该与draggable选项一起使用,以标记draggable元素。请注意,无论页脚槽在模板中的位置如何,它都将始终添加到默认槽之后。

<draggable v-model="myArray" draggable=".item">
<div v-for="element in myArray" :key="element.id" class="item">
{{element.name}}
</div>
<button slot="footer" @click="addPeople">Add</button>
</draggable>

Vue.Draggable使用总结的更多相关文章

  1. Vue.Draggable 文档总结

    本文章转自https://blog.csdn.net/zjiang1994/article/details/79809687 Vue.Draggable学习总结 Draggable为基于Sortabl ...

  2. Vue.Draggable

    Vue.Draggable拖动效果 下载包:npm install vue-draggable --save 组件中引进依赖: import draggable from 'vuedraggable' ...

  3. Vue.Draggable/SortableJS 的排序功能,在VUE中的使用

    此插件git: https://github.com/SortableJS/Vue.Draggable 基于Sortable.js http://www.cnblogs.com/xiangsj/p/6 ...

  4. Vue.Draggable实现拖拽效果(采坑小记)

    之前有写过Vue.Draggable实现拖拽效果(快速使用)(http://www.cnblogs.com/songdongdong/p/6928945.html)最近项目中要用到这个拖拽的效果,当产 ...

  5. Vue.Draggable实现拖拽效果(快速使用)

    1.下载包:npm install vuedraggable 配置:package.json "dependencies": { "element-ui": & ...

  6. Vue.Draggable:基于 Sortable.js 的 Vue 拖拽组件使用中遇到的问题

    Sortable.js 介绍 https://segmentfault.com/a/1190000008209715 项目中遇到的问题: A - 我需要在项目的拖拽组件中,使用背景 1 - 想到的第一 ...

  7. 插件Vue.Draggable(5000🌟)

    安装资源库:从Vue资源:https://github.com/vuejs/awesome-vue下载 Libraries/UI Components/Form/Drag and Drop yarn ...

  8. vue draggable 火狐拖拽搜索问题

    最近在使用vuedraggable做导航时候,谷歌拖拽是没问题的,但是在火狐测试时候,拖拽时候是可以成功,但是火狐还是打开了一个新的tab,并且搜索了,一开始想着是阻止默认行为,但是在@end时间中阻 ...

  9. Vue.Draggable拖拽效果

    1.下载包:npm install vuedraggable 配置:package.json "dependencies": { "vuedraggable": ...

  10. Vue开源项目库汇总

    最近做了一个Vue开源项目库汇总,里面集合了OpenDigg 上的优质的Vue开源项目库,方便移动开发人员便捷的找到自己需要的项目工具等,感兴趣的可以到GitHub上给个star. UI组件 elem ...

随机推荐

  1. Unity ARCore动态增加识别图

    项目需要,有两点要求说明一下 1.如果你的图片是下载生成的,那没什么问题 2.如果你的识别图是存储在APK包里的话需要调整图片属性: 代码如下: using QFramework; using Sys ...

  2. URLSearchParams(鲜为人知处理URL地址的技能)

    最近学习中无意发现url新处理方式,看到之后十分感兴趣就整理了一下. URLSearchParams URLSearchParams 接口定义了一些实用的方法来处理 URL 的查询字符串.参照 URL ...

  3. Vue2.0 双向绑定的原理与缺陷?

    原理 Object.defineProperty.getter.setter 标准回答 Vue响应式指的是:组件的data发生变化,立刻触发试图的更新 原理:Vue采用数据劫持结合发布者-订阅者模式的 ...

  4. 实现两个APP之间的跳转传值

    应用A 跳转到 应用B 1.在B中设置URL Schemes     加入一项item 并赋值,比如kiloMeter 并在B中实现 - (BOOL)application:(UIApplicatio ...

  5. 找vector最大最小《转载》

    定义了vector类型的数据,要找到其中的最大最小值,其实在C++中的algorithm头文件下就有直接的函数可以使用: #include <vector> #include <al ...

  6. TCAM and CAM memory usage inside networking devices(转)

    TCAM and CAM memory usage inside networking devices Valter Popeskic Equipment and tools, Physical la ...

  7. ArrayList学习笔记

    目录 1.继承关系 1.1.Serializable 标记性接口 1.2.Cloneable 标记性接口 1.3.RandomAccess 标记性接口 2.属性 3.构造方法 3.1.无参构造方法-A ...

  8. Hyperf微服务

    https://hyperf.wiki 状态码含义 https://segmentfault.com/a/1190000002523655

  9. P5733 自动修正

    字符串题解第一弹~ [千万不能错过的原题连接](https://www.luogu.com.cn/problem/P5733) 今天就研究一下这道自动修正问题哈 首先,我们看到了小写转大写的时候,就知 ...

  10. 基于Axi4_lite的UART串口Verilog代码实现

    UART是通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),通常称作UART,是一种异步收发传输器,是设备间进行异步通信的关键模块.UART ...