v-forディレクティブで配列やオブジェクトのデータを表示する [Vue.js]

Vue.js The Progressive JavaScript Framework

本記事では、Vue.jsのv-forディレクティブについて紹介します。

v-forディレクティブ

一覧表を表示するアプリケーションなどでは、配列などのコレクションのデータに対して繰り返し処理(ループ処理)を行います。

Vue.jsではHTMLテンプレートで繰り返し処理を行うためにv-forディレクティブが用意されています。

v-forディレクティブの書式

v-forディレクティブは以下の書式で使用します。

「コレクション」には、配列やオブジェクトを指定します。

v-forディレクティブの使用例

ここではv-forディレクティブを使用して、繰り返し処理を行うことでHTML要素を出力する例をいくつか示します。

配列の要素を出力

dataオプションに定義した配列をもとに、配列内のデータを出力する例を示します。

JavaScript

HTML

上記の例では、dataオプションに定義したarrayDataをHTMLテンプレートのdiv要素に繰り返し出力しています。

オブジェクトのプロパティを出力

v-forディレクティブはオブジェクトに対しても使用することができ、オブジェクトに使用した場合は、オブジェクトが持つプロパティに対して繰り返し処理が行われます。

JavaScript

HTML

上記の例では、dataオプションに定義したobjectDataをHTMLテンプレートのdiv要素に繰り返し出力しています。

配列からリストを出力

配列を繰り返し処理してリスト(<ul><li>)を出力する例を示します。

JavaScript

HTML

上記の例では、dataオプションに定義したitemsをHTMLテンプレートのli要素に繰り返し出力しています。

配列からテーブルを出力する

配列を繰り返し処理してテーブル(<tr>)を出力する例を示します。

JavaScript

HTML

上記の例では、dataオプションに定義したitemsをHTMLテンプレートのtr要素に繰り返し出力しています。

v-forディレクティブのindex

配列などのコレクションに対して繰り返し処理が行われている際の対象のインデックスが必要な場合はv-forディレクティブにindexを指定することで、処理対象の要素のインデックスを取得することができます。
v-forディレクティブでインデックスを取得する場合は、v-forディレクティブに指定する
要素を「()」で囲み、要素の後にカンマ「,」で区切って”index”を続けて記述します。

取得したインデックスは、HTMLテンプレート内で式を記述する際に利用できるほか、HTML要素に出力(表示)することもできます。

indexは配列だけではなくオブジェクトに使用することもできます。
オブジェクトに指定した場合は、オブジェクトのプロパティ名がindexから取得できます。

v-forディレクティブのkey属性の指定

配列やオブジェクトのプロパティなどのコレクションに対して、v-forディレクティブを使用して繰り返し処理を行うことができますが、繰り返し処理のもとになるコレクションが変更されると、それに応じて変更のたびに繰り返し処理が実行されます。
コレクションが変更されるたびにすべての要素に対して繰り返し処理を実行するのは、高い負荷がかかります。
Vue.jsではコレクションの要素を識別するために「key」という特別な属性を参照して個々の要素を識別しています。
key属性を付与することで、Vueが要素の変更前と変更後の差分を検出できるようになり、効率の良い処理を行うことが可能になります。

HTML

JavaScript

key属性はv-bindディレクティブでバインドますので、以下のように記述することもできます。

Vue.js 入門 Tips 一覧