【Vue.js】ディレクティブって何なのか
ディレクティブとは
Vue.jsに指示を出す仕組みのこと。
v-で始まる属性の総称。
ディレクティブの例
どんなのがあるのか、まとめてみる。
v-bind
データバインディングを行うときに使う。
まずはVue.jsファイルを用意。
var vm = new Vue({ el: '#vm', data: { comment: 'Hello Vue.js!' } })
続いて、HTMLファイルを用意
<div id="vm"> <input type="text" v-bind:value="comment"> </div> <script src="https://cdn.jsdelivr.net/npm/vue"></script>
こうすることで、inputタグの初期値をデータバインディングして表示することができる。
マスタッシュ構文は使えないので注意が必要。
v-if
条件分岐を行う。
表示/非表示の切り替えなどが可能。
var vm = new Vue({ el: '#vm', data: { toggle: false } })
<div id="vm"> <p v-if="toggle"> Hello </p> </div> <script src="https://cdn.jsdelivr.net/npm/vue"></script>
v-ifのプロパティtoggleの値がfalseになっているので、pタグは表示されない。
この際、検証ボタンでDOMツリーを確認するとpタグがなくなっている。
toggleの値をtrueに変えることで、Helloが見えるようになる。
v-show
v-ifと同様条件分岐を行う。
違いはcssのdisplayプロパティをon/offするということ。
var vm = new Vue({ el: '#vm', data: { toggle: false } })
<div id="vm"> <p v-if="toggle"> Hello </p> </div> <script src="https://cdn.jsdelivr.net/npm/vue"></script>
ここで検証ボタンでDOMツリーを確認すると、pタグが残ったままdisplay: none;になっていることがわかる。
頻繁にon/offする時は、v-showの方が有利。
v-for
forからわかる通り、繰り返しをさせたいときに使う。
書き方はこんな感じ
<要素名 v-for="バリュー in オブジェクト"> {{ 表示したいバリュー }} </要素名>
配列の場合
例えば複数のペットを登録しておき、それらをリスト表示させてみる。
まずはVue.jsファイル
var vm = new Vue({ el: '#vm', data: { pets: ['Koko', 'Maru', 'Sasuke'] } })
<div id="vm"> <ul> <li v-for="pet in pets">{{ pet }}</li> </ul> </div> <script src="https://cdn.jsdelivr.net/npm/vue"></script>
これでビューを確認するとこうなる。
- Koko
- Maru
- Sasuke
オブジェクトの場合
個人の情報を登録している場合も同様。
例えばヤサゴリのデータがこんな感じであったとする。
var vm = new Vue({ el: '#vm', user: { nickname: 'Yasagori', place: 'Forest', age: 31 } })
登録してある値を表示するにはこうする。
<div id="vm"> <ul> <li v-for="value in user">{{ value }}</li> </ul> </div> <script src="https://cdn.jsdelivr.net/npm/vue"></script>
登録してある値の項目も表示したければこうすれば良い。
<div id="vm"> <ul> <li v-for="(value, item) in user"> {{ item }} : {{ value }} </li> </ul> </div> <script src="https://cdn.jsdelivr.net/npm/vue"></script>
第2引数が設定したプロパティ名になるので注意。