前言

vuedraggable 是一个基于 Sortable.js 库的 Vue.js 拖拽功能组件。

资料

npm 地址 下载量还是蛮高的

github 地址 star 数还是蛮多的

官网在线示例

Sortable.js 库 github 地址

简单的安装与使用

  1. 安装
  1. yarn add vuedraggable
  2. # or
  3. npm i -S vuedraggable
  1. 使用(源码出处 custom-clone
  1. <template>
  2. <div class="row">
  3. <div class="col-3">
  4. <h3>Draggable 1</h3>
  5. <draggable
  6. class="dragArea list-group"
  7. :list="list1"
  8. :group="{ name: 'people', pull: 'clone', put: false }"
  9. :clone="cloneDog"
  10. @change="log"
  11. >
  12. <div class="list-group-item" v-for="element in list1" :key="element.id">
  13. {{ element.name }}
  14. </div>
  15. </draggable>
  16. </div>
  17. <div class="col-3">
  18. <h3>Draggable 2</h3>
  19. <draggable
  20. class="dragArea list-group"
  21. :list="list2"
  22. group="people"
  23. @change="log"
  24. >
  25. <div class="list-group-item" v-for="element in list2" :key="element.id">
  26. {{ element.name }}
  27. </div>
  28. </draggable>
  29. </div>
  30. <rawDisplayer class="col-3" :value="list1" title="List 1" />
  31. <rawDisplayer class="col-3" :value="list2" title="List 2" />
  32. </div>
  33. </template>
  34. <script>
  35. import draggable from "@/vuedraggable";
  36. let idGlobal = 8;
  37. export default {
  38. name: "custom-clone",
  39. display: "Custom Clone",
  40. order: 3,
  41. components: {
  42. draggable
  43. },
  44. data() {
  45. return {
  46. list1: [
  47. { name: "dog 1", id: 1 },
  48. { name: "dog 2", id: 2 },
  49. { name: "dog 3", id: 3 },
  50. { name: "dog 4", id: 4 }
  51. ],
  52. list2: [
  53. { name: "cat 5", id: 5 },
  54. { name: "cat 6", id: 6 },
  55. { name: "cat 7", id: 7 }
  56. ]
  57. };
  58. },
  59. methods: {
  60. log: function(evt) {
  61. window.console.log(evt);
  62. },
  63. cloneDog({ id }) {
  64. return {
  65. id: idGlobal++,
  66. name: `cat ${id}`
  67. };
  68. }
  69. }
  70. };
  71. </script>
  72. <style scoped></style>

项目使用中具体需要注意的细节

  1. 当使用两个拖拽组件,需要向目标组件拖拽时无效。

当使用两个拖拽组件,需要向目标组件拖拽时,需要注意:两个字段值,它们的值必须得是相同的。

这样的话,两个组件的拖拽功能才能生效,具体如下:

  • 拖拽组件

拖拽组件

  • 目标组件

目标组件