FrontEnd

Vue.js入門その7〜セレクトボックスを動的に変更してみる〜

投稿日:2017年9月25日 更新日:

はじめに

こんにちは、naoki85です。
今回はよくあるパターンですが、1つめのセレクトボックスを選択したら、次のセレクトボックスの項目を変えてみます。

サンプル

実際のサンプルはこちらです。
良い例が思いつかなかったので、このブログのカテゴリとタグを例にしてみました(笑)

とりあえず作ってみる

まずはソースコードを載せ、その後、説明を入れたいと思います。

ソースコード

セレクトボックスにv-modelでバインド

セレクトボックスの変更に対応して、selectedCategoryの値を変えるため、v-modelで双方向バインディングします。
値が変わったタイミングでメソッドを呼びたいので、v-on:changeを使用します。

なお、v-on:changeは下記のように省略形で書けます。
v-on 省略記法

<option>はv-forでリストレンダリング

フォーム入力バインディング

v-forを使用してリストレンダリングする際、value属性にcategory.idをバインドすることで、その値を持たせることができます。

また、v-bindも省略記法があります。
v-bind 省略記法

メソッドを呼んで、プロパティの値を変更

セレクトボックスが変わったタイミングで、fetchTasksメソッドを呼んで、tagsの値を変えます。
今回はメソッド内でタグの値をベタ書きしていますが、configやAPIで取得することを想定しています。

tagsの値が変われば、タグの方でもv-modelを設定しているので、セレクトボックスが変わります。

tagsがセットされたら、タグのセレクトボックスを表示

とりあえずこれで動きはするのですが、tagsがセットされるまではタグのセレクトボックスを非表示にしておこうと思います。

JavaScriptのlengthで、tagsの配列長を取得してそれに応じて表示させたいと思います。

さいごに

簡単ですが、今回は以上になります。

次回はテストかVuexを扱いたいな、と思っております。
(ただ、主にRailsにVue.jsを載せることを考えているので、Rails側でテストコードを書こうかな、と悶々としております。)

おすすめ書籍

基礎から学ぶ Vue.js  Vue.js入門 基礎から実践アプリケーション開発まで  Nuxt.jsビギナーズガイド―Vue.js ベースのフレームワークによるシングルページアプリケーション開発

page_footer_300rect




page_footer_300rect




-FrontEnd
-

執筆者:


comment

メールアドレスが公開されることはありません。

CAPTCHA


関連記事

JQueryでformにinput要素を足していく

はじめに 最近個人的にディープラーニングの勉強をしているtonnyです。 ディープラーニングの勉強がてら、好きな麻雀に関するWebアプリを作成してみました。 今回はその作成の中で、今まであまりやってこ ...

Vue.js入門その3〜簡単にTODOアプリを作ってみたよ〜

はじめに 7/12 修正 記事下部にて、filterメソッドを使用している箇所がありましたが、forEachの方が適しているとご指摘がありましたので、修正しました。 以前Qiitaの方に投稿した記事で ...

Vue.js入門その1〜基本文法〜

はじめに 軽量JSフレームワークとして有名なVue.js。 最近、Laravelに触れる機会が増えたことと、以前からRails + Vueという構築を耳にするので、今更ではありますが勉強を始めようと思 ...

Vue.jsでWebアプリケーションを作る〜Vue.jsの基礎〜

1 はじめに1.1 Vue.jsとは1.2 インストール1.3 Vueアプリケーションを作る2 データを表示する2.1 文字列を表示する2.2 HTMLで表示する3 属性を指定する3.1 インラインス ...

ウチのMaterialize事情

1 はじめに2 ボタン3 フォーム3.1 ラベルについて3.2 セレクトボックスについて3.3 ラジオボタンについて4 アラート5 フォント6 さいごに はじめに うちのチームでは現在、CSSフレーム ...

フォロー

follow us in feedly

page_side_300rect

2017年9月
« 8月 10月 »
 12
3456789
10111213141516
17181920212223
24252627282930

アプリ情報

私たちは無料アプリもリリースしています、ぜひご覧ください。 下記のアイコンから無料でダウンロードできます。