当前位置:   article > 正文

【elementUI系列一】vue拖拽功能实现-vuedraggable实现多层嵌套拖拽_vue 拖拽 多层嵌套放置目标

vue 拖拽 多层嵌套放置目标

系列文章目录

文章目录

拖拽功能组件

awe-dnd和vue-draggable做了一番比较,最终选择了vue-draggable,至于原因:

  1. vue-draggable的@start和@end只会在拖拽元素移动的开始和结束时触发,过程中不会触发
  2. awe-dnd会一直监听拖拽的过程,在拖拽的过程中会一直打印信息

使用

各项配置介绍:vuedraggable文文档

1.安装 npm或者yarn

  1. yarn add vuedraggable
  2. npm i -S vuedraggable

2.在vue项目中引入draggable 

  1. //导入draggable组件
  2. import draggable from 'vuedraggable';
  3. ......
  4. export default {
  5. components: {
  6. draggable,
  7. },
  8. data() {
  9. return {
  10. imageUrlList: []
  11. };
  12. },
  13. methods: {
  14. /**
  15. * @description: 预览的图片添加下载按钮
  16. */
  17. clickImage() {
  18. },
  19. /**
  20. * @description: 查看-大图预览, 先看当前大图
  21. * @param {Number} index 当前下标
  22. * @param {Array} imgList 所有大图
  23. * @return {Array} arr 当前图片为第一个的大图
  24. */
  25. getPreviewList(index, imgList) {
  26. let arr = [];
  27. let i = 0;
  28. for (i; i < imgList.length; i++) {
  29. arr.push(imgList[i + index].fileUrl);
  30. if (i + index >= imgList.length - 1) {
  31. index = 0 - (i + 1);
  32. }
  33. }
  34. return arr;
  35. },
  36. }
  37. };

3.在模板中使用draggable

  1. <draggable
  2. v-model="imageUrlList"
  3. animation="300"
  4. draggable=".drag-area"
  5. >
  6. <div
  7. class="drag-area"
  8. v-for="(item, index) in imageUrlList"
  9. :key="item.fileName"
  10. >
  11. <el-image
  12. @click.stop.prevent="clickImage"
  13. :src="item.fileUrl"
  14. :preview-src-list="getPreviewList(index, imageUrlList)"
  15. >
  16. <div slot="error" class="image-slot">
  17. <i class="el-icon-picture-outline"></i>
  18. </div>
  19. </el-image>
  20. </div>
  21. <div class="el-upload__text">
  22. <em>点击上传</em>
  23. </div>
  24. </draggable>

 以下几点需要注意

  1. draggable区域内嵌入多层,要把拖拽区域加上class名称,draggable=‘.class名’,这样就能确保draggable内部分可以拖拽,部分不能拖拽
  2. el-image的点击事件和vue.draggable的拖拽事件会有事件冲突的问题,那么你需要使用.stop和.prevent修饰符来禁止默认事件和冒泡.

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/436261
推荐阅读
  

闽ICP备14008679号