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を使えるようにする