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. js-惰性函数

    1. 需求:我们现在需要写一个 foo 函数,这个函数返回首次调用时的 Date 对象,注意是首次. 使用场景:当我们每次都需要进行条件判断,其实只需要判断一次,接下来的使用方式都不会发生改变的时候, ...

  2. 为 windows 10 右键菜单加打开DOS窗口

    创建一个批处理文件,输入以下行,保存执行即可. echo off reg add "HKCR\*\shell\ms-dos" /ve /d 打开DOS命令 /f reg add & ...

  3. speedtest测速

    wget https://raw.github.com/sivel/speedtest-cli/master/speedtest.py chmod a+rx speedtest.py mv speed ...

  4. Foxmail配置Exchange报错:RPC 服务器不可用 的解决方法

    如果确定了你电脑的RPC服务正常开启了,还是报这个错,那可能是你的Foxmail版本太低了, 低版本用Exchange时就会报这个错,升级为最新版就好了,我升级到7.2.23就正常了

  5. idea的操作快捷键

    IDEA调试快捷键 F8 跳到下一步 相当于eclipse的F6 F7 进入到方法 相当于eclipse 的F7 F9 恢复程序到下一个断点 相当于eclispe的 进入下一个断点 shift+F8 ...

  6. day11 事件相关笔记

    day11 事件上 事件的概述 事件是指代一个东西的操作被另外一个东西监听以后的一个过程(事件),这个过程可以完成对应的操作(处理函数)事件监听器是一个标准的观察者模式(observer)也被称为订阅 ...

  7. vue教程

    vue教程 环境搭建 nodejs下载 nodejs官网 已经"下一步式安装"过, 本地电脑历史版本 Mac更新到官网最新版本 # 1.先查看本机node.js版本: node - ...

  8. weboack5webpack5用url-loader(file-loader)处理字体

    file-loader(url-loader)可以用解析打包字体. webpack配置loader \\ webpack.config.js const webpack = require(" ...

  9. MyBatis_08(MyBatis缓存)

    MyBatis缓存: 缓存只针对 "查询功能有效" MyBatis的一级缓存: 一级缓存是SqlSession级别的,通过同一个SqlSession查询的数据会被缓存,下次查询相同 ...

  10. 读后笔记 -- Java核心技术(第11版 卷 II ) Chapter1 Java 8 的流库

    1.1 从迭代到流的操作 迭代:for, while 流:stream().优点:1)代码易读:2)性能优化 public class CountingLongWords { public stati ...