LoginSignup
0
0

More than 3 years have passed since last update.

【vue.js】ドラッグで順番を変えられるリストを作った

Posted at

Vue.Draggableというライブラリを利用して実現しました
https://github.com/SortableJS/Vue.Draggable

▼まずは普通に表示
【js側】
データを用意します
(TestViewという名前のコンポーネントにしました)

<script>
    export default {
        name: "TestView",
        data: function () {
            return {
                list: [
                    { id: 1, name: 'リスト1' },
                    { id: 2, name: 'リスト2' },
                    { id: 3, name: 'リスト3' }
                ],
            }
        }
    }
</script>

【HTML側】
listをv-forを使って表示します
v-forについて: https://jp.vuejs.org/v2/guide/list.html#オブジェクトの-v-for

<template>
    <div v-for="content in list" :key="content.id" style="margin: 10px;">
       <span>
            {{ content.name }}
       </span>
    </div>
</template>

ここまででこんな感じの表示ができます(スタイルは適当に変えています)
スクリーンショット 2020-10-11 6.31.38.png

▼並び替えできるようにします
Vue.Draggableをインストール
npmでインストールしました

npm install --save vuedraggable

【js側】
Vue.Draggableをインポート

<script>
    //インポート部分追記
    import draggable from 'vuedraggable'

    export default {
        name: "TestView",
        data: function () {
            return {
                list: [
                    { id: 1, name: 'リスト1' },
                    { id: 2, name: 'リスト2' },
                    { id: 3, name: 'リスト3' }
                ],
            }
        }
    }
</script>

【HTML側】
draggableタグでドラッグしたいリストを囲みます

<template>
    <draggable v-model="list">
        <div v-for="content in list" :key="content.id" style="margin: 10px;">
            <span>
                {{ content.name }}
            </span>
        </div>
    </draggable>
</template>

ドラッグ&ドロップで順番を変えられるようになりました(画像だとわかりにくいですが...)
スクリーンショット 2020-10-11 6.50.26.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0