No.28 vue-element-admin 学习使用(二十三)drag-dialog 等拖拽组件

1,302 阅读2分钟

这是我参与8月更文挑战的第28天,活动详情查看:8月更文挑战

drag-dialog 拖拽dialog

这是一个可以拖拽的dialog,看起来挺好玩的,但是真的会有这么鬼畜的需求么,撕不过产品么。。。

用到了elDragDialog指令

image.png

具体的实现在@/directive/el-drag-dialog/drag.js中,简单看一下js的实现,获取到页面中的dialog,鼠标按下,准备拖拽的时候,计算当前元素距离可视区域的距离,然后计算出移动的距离,进行一些边界处理,最后移动dialog的dom元素。

使用方式是给el-dialog加上@dragDialog="handleDrag"就行了,并且有一个@dragDialog="handleDrag"回调方法。

drag-select 拖拽select

可拖拽调整位置的select,组件是ElDragSelect,用法是和普通select一样的,因为它内部其实就是包了一层el-select

image.png mounted后执行setSort方法,获取到包裹选择内容的大span,然后用sortablejs实现了拖拽逻辑

image.png

dnd-list 列表拖拽

实现了一个可以拖拽的列表,是基于Vue.Draggable写的,用起来很简单,把两个list传进去就行了 image.png

然后使用了vuedraggable,把两个list传进去,修改一下样式。

drag-kanban 拖拽看板

引入Kanban组件,直接就能使用了,也是用vuedraggable实现的

image.png

组件内是draggable,传list进去,v-bind与父组件进行通信,setData方法是为了修复火狐的一个bug,github.com/RubaXa/Sort… ,然后下面v-for遍历list,用div展示这些数据,写一些样式,

image.png

令我疑惑的是,这3个kanban是怎么互相之间可以拖拽的,似乎没有看到联系,除了group是相同的。

然后找了一下vuedraggable的文档www.itxst.com/vue-draggab… 果然是这个原因

image.png

至此官方提供的有趣小组件也学习完了,明天学什么再看吧~