У меня есть array
элементов, но я хочу отобразить их и предоставить функцию Draggable (SortableJS), но только часть этого array
.
Для этого я использовал вычисляемое свойство из исходного массива данных и разделил массив на два массива, я использовал эти вычисляемые массивы для создания списка, но когда я перетаскиваю и пытаюсь изменить порядок перетаскивания списка, кажется, что что-то не так с индексы, как в примере ниже, если вы попытаетесь перетащить первый список, он не изменит порядок, а второй.
Итак, как я могу решить эту проблему?
new Vue({
el: '#app',
components: { draggable: window.vuedraggable },
data: () => {
return {
numbers: [1, 2, 3, 4, 5, 6]
}
},
computed: {
evens() {
return this.numbers.filter(number => number % 2 === 0);
},
odds() {
return this.numbers.filter(number => number % 2 === 1);
}
}
})
<script src="https://cdn.jsdelivr.net/npm/[email protected]/Sortable.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/Vue.Draggable/2.20.0/vuedraggable.umd.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.2/vue.min.js"></script>
<div id="app">
<div style="display: flex;">
<ul style="width: 50%">
<draggable v-model="numbers"
draggable="li">
<transition-group type="transition">
<template v-for="(number, index) in evens">
<li :key="index">{{ number }}</li>
</template>
</transition-group>
</draggable>
</ul>
<ul>
<template v-for="number in odds">
<li>{{ number }}</li>
</template>
</ul>
</div>
</div>