gpt4 book ai didi

vue.js - 嵌套的 vue-draggable 元素

转载 作者:行者123 更新时间:2023-12-04 15:52:32 28 4
gpt4 key购买 nike

我正在尝试使用嵌套的 vue-draggable 元素来直观地表示歌曲结构(具有潜在的重复)。

这是我想出的原型(prototype):

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 属性中表示
  • 我将如何进行更多嵌套?群中群中...
  • 最佳答案

    你应该:

    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

    关于vue.js - 嵌套的 vue-draggable 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53307959/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com