Я создаю приложение, используя Vue, Vuex и vuedraggable. Данные в хранилище выглядят следующим образом:
lists: [
[
{
group: 0,
order: 1,
text:
"Uses both hands to reach for, and grasp, objects. Will occasionally use one hand."
}
],
[
{
group: 1,
order: 2,
text: "Uses pincer grasp with thumb and index finger."
},
{
group: 1,
order: 3,
text: "Transfers objects from one hand to the other."
}
],
[
{
group: 2,
order: 4,
text: "Picks up small objects quickly using fine pincer grasp."
},
{
group: 2,
order: 5,
text: "Turns two or three pages of a book at a time"
},
{
group: 2,
order: 6,
text:
"Holds pencil at middle or top with whole hand or attempt at thumb and fingers grip"
},
{
group: 2,
order: 7,
text: "Scribbles"
},
{
group: 2,
order: 8,
text: "Beginning to show favoured hand"
}
]
]
Фактический список содержит немного больше данных.
Пока что я рандомизирую данные и делю их на 7 отдельных массивов. Пользователь может перетаскивать элементы между этими списками, и данные хранилища должны отражать эти изменения. Эти 7 затем отображаются так в 7 отдельных компонентов перетаскивания:
<template>
<div class="draggable-list-container">
<div
class="draggable-list-inner-container"
v-for="(statementOuter, indexOutDrag) in list"
:key="indexOutDrag"
>
<h1>{{ titles[indexOutDrag] }}</h1>
<draggable
v-model="list"
@change="log"
:emptyInsertThreshold="150"
v-bind="dragOptions"
class="list-group"
>
<transition-group name="flip-list" type="transition">
<div
v-for="statementInner in statementOuter"
:key="statementInner.order"
class="drag-item flex flex-justify-betweeen"
:data-val="statementInner.group"
>{{ statementInner.order }}: {{ statementInner.text }}</div>
</transition-group>
</draggable>
</div>
<div class="submit-button-container">
<button class="btn" @click="revealAnswers">Reveal answers</button>
<button class="btn" @click="accessible">Accessible version</button>
</div>
</div>
</template>
Однако, когда элемент перемещается, кажется, что весь массив перемещается в другие перетаскиваемые списки. И иногда кажется, что он полностью разрушает некоторые массивы.
Использование отладки Vuex на chrome, кажется, показывает, что он создает 2 новых массива, а затем оба массива удаляются. Кажется, что эти два массива содержат элемент, предназначенный для переключения.
Удаление v-модели исправляет это, однако мне нужна v-модель, чтобы держать данные в хранилище в актуальном состоянии в соответствии с текущим расположением элементов в массив.
Я не уверен, что вызвало это и где я иду не так. Буду признателен за любые предположения о том, где может быть моя ошибка.
Все приложение можно увидеть по этой ссылке песочницы кода: https://codesandbox.io/s/4462-392-vuex-testso-wc8nd