v-for

記事の内容

v-for

v-forは、配列やオブジェクトをリスト(繰り返し)表示させるディレクティブになります。

v-forの説明図
記法

[ HTML ] =============================
 <要素名 v-for=”アイテム in リスト”>
 <要素名 v-for=”アイテム of リスト”>
 ※inかofどちらでも良い

<!DOCTYPE html>
<html lang="ja">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <link rel="stylesheet" href="./css/main.css" />
    <title>v-forについて</title>
  </head>
  <body>
    <div id="app">
      <table>
        <thead>
          <tr>
            <th>タイトル</th>
            <th>価格</th>
          </tr>
        </thead>
        <tbody>
          <tr v-for="book in books">
            <td>{{ book.title }}</td>
            <td>{{ book.price }}円</td>
          </tr>
        </tbody>
      </table>
    </div>

    <script src="./js/for.js"></script>
  </body>
</html>
Vue.createApp({
  data() {
    return {
      books: [
        {
          title: "HTML & CSS & JavaScript",
          price: 2000,
        },
        {
          title: "CSS設計完全ガイド",
          price: 3280,
        },
        {
          title: "リーダブルコード",
          price: 2400,
        },
      ],
    };
  },
}).mount("#app");
table {
  border-collapse: collapse; /* セルの線を重ねる */
  text-align: left;
  background-color: white;
}
th,
td {
  border: solid 1px; /* 枠線指定 */
}
th {
  background-color: #05384b;
  color: white;
}
出力結果
タイトル 価格
{{ book.title }} {{ book.price }}円

インデックス番号を取得する

v-forでは、アイテム以外にもインデックス情報も取得できます。

記法

[ HTML ] =============================
 <要素名 v-for=”( アイテム , インデックス ) in リスト”>
 <要素名 v-for=”( アイテム , インデックス ) of リスト”>

<!DOCTYPE html>
<html lang="ja">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <link rel="stylesheet" href="./css/main.css" />
    <title>v-for indexについて</title>
  </head>
  <body>
    <div id="app">
      <table>
        <thead>
          <tr>
            <th>No</th>
            <th>タイトル</th>
            <th>価格</th>
          </tr>
        </thead>
        <tbody>
          <tr v-for="(book,index) in books">
            <td>{{ index + 1 }}</td>
            <td>{{ book.title }}</td>
            <td>{{ book.price }}円</td>
          </tr>
        </tbody>
      </table>
    </div>

    <script src="./js/index.js"></script>
  </body>
</html>
Vue.createApp({
  data() {
    return {
      books: [
        {
          title: "HTML & CSS & JavaScript",
          price: 2000,
        },
        {
          title: "CSS設計完全ガイド",
          price: 3280,
        },
        {
          title: "リーダブルコード",
          price: 2400,
        },
      ],
    };
  },
}).mount("#app");
table {
  border-collapse: collapse; /* セルの線を重ねる */
  text-align: left;
  background-color: white;
}
th,
td {
  border: solid 1px; /* 枠線指定 */
}
出力結果
No タイトル 価格
{{ index + 1 }} {{ book.title }} {{ book.price }}円

オブジェクト取得に関して

オブジェクト取得では、第3引数まで指定できます。

記法

[ HTML ] =============================
 <要素名 v-for=”( インデックス , バリュー , キー ) in オブジェクト”>
 <要素名 v-for=”( インデックス , バリュー , キー ) of オブジェクト”>

<!DOCTYPE html>
<html lang="ja">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <link rel="stylesheet" href="./css/main.css" />
    <title>v-for indexについて</title>
  </head>
  <body>
    <div id="app">
      <ul>
        <li v-for="(value, key, index) in TomojiObj">
          インデックス:{{ index }}<br />
          キー:{{ key }}<br />
          値:{{ value }}
        </li>
      </ul>
    </div>

    <script src="./js/obj.js"></script>
  </body>
</html>
Vue.createApp({
  data() {
    return {
      TomojiObj: {
        name: "Tomoji",
        height: 170,
        weight: 60,
      },
    };
  },
}).mount("#app");
出力結果
  • インデックス:{{ index }}
    キー:{{ key }}
    値:{{ value }}
記事の内容
閉じる