今回の記事は、
- これからVue.jsを始めてみたい
- v-modelの使い方が知りたい
- selectタグでv-modelを使ってみたい
という方に向けた記事になっています。
なお、Vue.jsの概要や特徴については以下の記事にて詳しく解説していますので、こちらもぜひご覧ください。
今回の記事は、 最近よく聞くけど、Vue.jsってなに?これからVue.jsを始めてみたいVue.jsの特徴やメリットが知りたい というお悩みをお持ちの方に向けた記事になっています。 ReactやAngular、そしてV[…]
フリーランス案件を探すならこのエージェント!
転職を考えているならこのエージェント!
v-modelディレクティブとは?
まず初めに、v-modelディレクティブの概要についておさらいしておきましょう。
v-modelディレクティブは、主にformのinput / textarea などの要素に使用され、View側(HTML)とModel側(Vue.js)との間でデータの双方向バインディングを実現する仕組みでしたね。
このv-modelディレクティブを使用することで、フォームの入力値を簡単に管理することができ、これまでの素のJavascriptやjQueryでのやり方と比べて開発効率を格段にあげることができます。
基本的な使い方や実際の具体例については以下の記事にて詳しく解説していますので、ぜひこちらもご覧くださいね。
今回の記事は、 これからVue.jsを始めてみたいv-modelの使い方が知りたい双方向バインディングを使ってみたい という方に向けた記事になっています。 なお、Vue.jsの概要や特徴については以下の記事[…]
それでは早速、selectタグに対してv-modelディレクティブを使用する方法を見ていきましょう。
【Vue.js】selectタグ(単体選択)でv-modelを使用する方法
selectタグの中でも、値を一つだけ選択する場合には、基本的には通常通りの使い方とは変わらず、selectタグに対してv-modelディレクティブを設定してあげるだけで大丈夫です。
実装コード
<div id="app1">
<select v-model="selectedLanguage">
<option disabled value="" >値を選択してください</option>
<option>Ruby</option>
<option>Javascript</option>
<option>PHP</option>
</select>
<p v-show="selectedLanguage>現在選択されているのは {{ selectedLanguage }} です。</p>
</div>
<script>
let app1 = new Vue ({
el: "#app1",
data: {
selectedLanguage: ""
}
})
</script>
動作確認用
現在選択されているのは {{ selectedLanguage }} です。
上記の通り、通常のinputタグに対して使用するのと同じ形で双方向バインディングが実現できているのがご確認いただけたかと思います。
【Vue.js】selectタグ(複数選択)でv-modelを使用する方法
単体選択の場合と比べて、複数の値を選択できる場合には少しだけ注意が必要です。
それは、チェックボックスの場合と同様に、「値を格納したいdataプロパティの初期値を配列にしておく」ということです。
実装コード
<div id="app2">
<select v-model="selectedLanguages" multiple>
<option>Ruby</option>
<option>Javascript</option>
<option>PHP</option>
</select>
<p v-show="selectedLanguages.length>現在選択されているのは {{ selectedLanguages.join(", ") }} です。</p>
</div>
<script>
let app2 = new Vue ({
el: "#app2",
data: {
selectedLanguages: []
}
})
</script>
動作確認用
現在選択されているのは {{ selectedLanguages.join(", ") }} です。
上記のように、dataプロパティの初期値を配列にしておくことで、複数選択を許容する場合にもしっかりと双方向バインディングを実現することができます。
些細な違いではありますが、不意に詰まってしまいポイントでもありますので、この点はぜひ覚えておいてくださいね。
最後に
さて、ここまでselectタグでv-modelを使用する方法についてご紹介してきましたがいかがでしたか?
「複数選択の場合のみ、格納先のdataプロパティを配列にしておく」という点だけ注意しておけば通常の使い方と変わりはありません。
このv-modelディレクティブは、Vue.jsでWebアプリを作成する際に避けて通れない道と言っても過言ではないため、ぜひこの機会にマスターしておいてくださいね。
このブログを通じて少しでも「傍(はた)を楽(らく)にする」ことができていれば嬉しく思います。
最後まで読んで頂きありがとうございました。