【问题标题】:Nested vue-draggable elements嵌套的 vue 可拖动元素
【发布时间】:2023-04-03 08:56:01
【问题描述】:

我正在尝试使用嵌套的 vue 可拖动元素来直观地表示歌曲结构(可能有重复)。

这是我想出的原型:

var vm = new Vue({
  el: "#main",
  data: {
    "structure": ["Prelude", "Verse", ["Chorus", "Verse"], "Last Chorus"]
  },
});
#main {
  text-align: center;
  width: 300px;
  background-color: #EEE;
  padding:10px;
}

.element {
  text-align: center;
  padding: 10px;
  margin: 5px auto;
  border-radius: 10px;
  color: #FFF;
  font-family: sans-serif;
  font-weight: bold;
}

.tag {
  width: 150px;
  background-color: #007BFF;
}

.group {
  width: 175px;
  border: 3px solid #CED4DA;
  background-color: #FFF;
}
<script src="//cdnjs.cloudflare.com/ajax/libs/vue/2.5.2/vue.min.js"></script>
<script src="//cdn.jsdelivr.net/npm/sortablejs@1.7.0/Sortable.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/Vue.Draggable/2.15.0/vuedraggable.min.js"></script>

<div id="main">
  <draggable v-for="tag in structure" :options="{group:'tags'}">
    <div v-if="!Array.isArray(tag)" class="tag element">
      {{tag}}
    </div>
    <draggable v-else :options="{group:'tags'}" class="group element">
      <div v-for="tag2 in tag" class="tag element">
        {{tag2}}
      </div>
    </draggable>
  </draggable>
  {{structure}}
</div>

即使是 Vue.js 的新手,这似乎也不是要走的“路”。我对此解决方案的具体问题是:

  • 当分组元素位于顶部时,我无法在其上方拖动任何其他东西(同样适用于最底部)
  • 拖动的结构没有在 data.structure 属性中表示
  • 如何进行更多嵌套?组中组...

【问题讨论】:

  • 试用最新版本并设置dragoverBubble: true

标签: vue.js vuejs2 draggable


【解决方案1】:

你应该:

1) 将数据结构改为递归:

 data: {
    "structure": [
       { name: "Prelude"}, 
       { name: "Verse"}, 
       { name: "Middle", children: [{ name: "Chorus"}, { name: "Verse"}]}, 
       { name: "Last Chorus"}
    ]
  },

2) 使用可拖动的递归组件,例如:

<template>
  <draggable class="dragArea" tag="ul" :list="data" :group="{ name: 'g1' }">
    <li v-for="el in children" :key="el.name">
      <p>{{ el.name }}</p>
      <nested-draggable v-if="el.children" :tasks="el.children" />
    </li>
  </draggable>
</template>

查看这个工作示例:

https://sortablejs.github.io/Vue.Draggable/#/nested-example

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-19
    • 1970-01-01
    • 2021-09-11
    • 1970-01-01
    • 2022-01-21
    • 2020-06-28
    • 2022-11-10
    • 1970-01-01
    相关资源
    最近更新 更多