Vue.jsで単一要素のループではなく、複数要素のブロックをループさせたいということがたまにあるので、その際のループ方法をメモしておきます。
サンプルコード
例として、以下のようなタグ構造でdtとddのセットをループさせたいとします。
<dl> <dt>天ヶ瀬むゆ</dt> <dd>夢を食べる半人半妖。寝ている人の悪い夢を、良い夢に変えることができる。普段は周囲にバレないよう気をつけているが、自身も様々な夢を見たいと配信活動を始める。しかし未だ本人の寝つきは悪い。</dd> <dt>先斗寧</dt> <dd>関西出身の、異界と現代を繋ぐ雑貨屋でアルバイトする学生。雑貨屋に住み着く妖精が見えるようになったのだが、ブルーベリーの食べすぎのせいかもしれない。</dd> <dt>海妹四葉</dt> <dd>「チャレンジしてから考える」タイプの、七転び八起き貧乏学生。新しく楽しい挑戦を求めた結果、配信活動を始めることにした。頼られようと本人は振舞っているつもりが、なぜかいつも心配されてしまう。</dd> </dl>
ループ用にdtとddを囲うタグを追加する形でもループさせることはできますが、タグ構造を変更させたくない場合はtemplateタグを使用します。
<div id="app"> <dl> <template v-for="member in members"> <dt>{{ member.name }}</dt> <dd>{{ member.profile }}</dd> </template> </dl> </div>
var app = new Vue({ el: '#app', data: { members: [ { name: '天ヶ瀬むゆ', profile: '夢を食べる半人半妖。寝ている人の悪い夢を、良い夢に変えることができる。普段は周囲にバレないよう気をつけているが、自身も様々な夢を見たいと配信活動を始める。しかし未だ本人の寝つきは悪い。' }, { name: '先斗寧', profile: '関西出身の、異界と現代を繋ぐ雑貨屋でアルバイトする学生。雑貨屋に住み着く妖精が見えるようになったのだが、ブルーベリーの食べすぎのせいかもしれない。' }, { name: '海妹四葉', profile: '「チャレンジしてから考える」タイプの、七転び八起き貧乏学生。新しく楽しい挑戦を求めた結果、配信活動を始めることにした。頼られようと本人は振舞っているつもりが、なぜかいつも心配されてしまう。' } ] } });
templateタグはレンダリング時には描画されないため、意図したタグ構造で表示することができました。
v-forのデモページ
コメントが承認されるまで時間がかかります。