48
30

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Vue.jsで「すべて選択」を実装する

Last updated at Posted at 2018-09-29

checkboxを並べて、それが3つほどで収まっている場合は、それだけでもいいでしょう。
しかし、ユーザーが自身で追加した項目など、何個出力されるか分からない場合があります。
ここではそんな時にあると便利な「すべて選択」を実装してみます。

実装デモ

See the Pen Select All Checkbox by Vue.js - flow4 by Shoko Oyamada (@chcltn) on CodePen.

「すべて選択」の実装の流れ

  1. dataとv-forでリストを用意
  2. すべて選択が押されたかのフラグを用意
  3. すべて選択が押された時の動きを作成
  4. 個々のcheckboxをクリックした時の動きを作成

1.dataとv-forでリストを用意

dataにて、猫の名前を配列catsに入れておきます。
それを利用し、v-forでリストを作成します。

See the Pen Select All Checkbox by Vue.js - flow1 by Shoko Oyamada (@chcltn) on CodePen.

2.すべて選択が押されたかのフラグを用意

次に、すべて選択が押されたかのフラグとなる変数を作成します。
dataの中で
isAllSelectedという変数を作成し、falseに設定しておきます。

method内で selectAllCats という関数を作成します。
この関数では、上記のフラグが切り替わるようにしておきます。

関数が出来たら、HTML側で、すべて選択のチェックボックスに@clickでくっつけておきます。

See the Pen Select All Checkbox by Vue.js - flow2 by Shoko Oyamada (@chcltn) on CodePen.

3.すべて選択が押された時の動きを作成

実際のアプリケーション開発の現場では、catsのようなデータはidを割り振られ管理されていることでしょう。なので以降はdata内のcatsにもidを割り振っておきましょう。名前はnameに入れておくことにします。

HTML側の出力も{{cat.name}}のようにしておきましょう。

また、実際の現場では、既に何かしらが選ばれていることが多いので、
selectedCatIdsにも値を入れてみましょう。(これは入れなくても大丈夫です)

See the Pen Select All Checkbox by Vue.js - flow3 by Shoko Oyamada (@chcltn) on CodePen.

これで、すべて選択が動くようになりました。

4.個々のcheckboxをクリックした時の動きを作成

このすべて選択のチェックボックスは
個々のチェックボックスの選択状態と連動して動いて欲しいと思います。

  • 個々のチェックボックスどれか1つでも外れている時には、すべて選択もチェックが外れる
  • 個々のチェックボックスすべてがチェックされた時には、すべて選択もチェックされる

という動きにしてみましょう。

selectという関数を定義し、
selectedCatIdslengthcatslengthを突き合わせ、判定します。
lengthが一致しなかった時は、isAllSelectedをfalseにし、すべて選択のチェックを外します。

See the Pen Select All Checkbox by Vue.js - flow4 by Shoko Oyamada (@chcltn) on CodePen.

これで完成です。おつかれさまでした。

48
30
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
48
30

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?