Rails5.1.1でのVuejs
1. HTML5を利用したDrag&Drop
Rails5.1.1の環境で実装してみた。ビューとJS側はただ宣言と登録だけして全てのコードは.vueファイルに書いておいた。
- ビューとJS側
index.html.slim
1 2 3 4 | |
todo.js
1 2 3 4 5 6 7 8 | |
- vueファイル
todo-dnd.vue
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 | |
Vuejsで提供してくれるEventの一部
@click
@submit
@keyup
@mousedown
@mousemove
@mouseup
@mouseleave
@touchstart
@touchmove
@touchend
@dragstart
@dragenter
@dragleave
@dragover
@dragend
この中でdrag&dropに関するEventもあるのでそれらを活用してVuejsとHTML5を連携する。
テンプレート側で、
Dragする対象にdraggable="true"にしてDragが可能になるようにする。あと@dragstartをかけてdragが始まったときのEventを処理する。
Dropされる対象に@dragover,@dragleave,@dropをかけてそれぞれの必要な処理をさせる。
2. VueDraggableを利用したDrag&Drop
ビューとJS側はさっきのやつと同じようになるのでvueファイルだけ書く。 VueDraggableを使うためには二つの方法がある。
1 2 3 4 5 6 7 8 | |
こういうふうにimportをするか、
1
| |
requireをする。
今回は前者のimportの方法を使う。importをするにはnpmやbowerでインストールをする。今回はnpmで。
1
| |
- vueファイル
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 | |
VueDraggableではdraggableというタグを使う。このタグを使っていろんなDnDができる。optionsを使って同じグループに結んだらDnDを簡単に実装することができるし、pullとかputとかでDnDのOptionを決めることができる。
参考
Vue.jsのリストレンダリングとhtml5のドラッグ&ドロップの実装
ネイティブ HTML5 ドラッグ&ドロップ
require is not definedを解消してrequireを使えるようにする