Vue.jsのv-for
で反復する値には、配列、文字列、数値、オブジェクトを指定できます(公式サイト該当箇所)。
配列の場合、内部的には以下のように変換され処理されます(一部省略)。
html
1<template>
2 <div v-for="task in ['taskA', 'taskB', 'taskC']">
3 // 省略
4 </div>
5</template>
javascript
1for (let i = 0; i < array.length; i++) {
2 render(array[i], i) // array[i]がtaskに対応する
3}
補足:render()は、templateのdiv要素を描画するための関数だと思ってください。
JavaScriptでは、文字列でも配列と同じように各文字にアクセスできます(MDN該当箇所(「文字列へのアクセス」の部分))。
javascript
1var chars = 'abc'
2console.log(chars[0]) // -> a
ですので、Vue.jsでは配列と同じようにfor-loopに変換して処理しています。
html
1<template>
2 <div v-for="task in 'tasks'">
3 // 省略
4 </div>
5</template>
javascript
1for (let i = 0; i < array.length; i++) {
2 render(array[i], i) // array[i]がtaskに対応する
3}
ちなみに、render(array[i], i)
となっていて、第2引数にfor-loopのindexを渡していますが、これはtemplateを以下のように書いた場合に使用できます。
html
1<template>
2 <div v-for="(task, index) in 'tasks'">
3 // 省略
4 </div>
5</template>
Vue.js本体のソースコードに興味があれば、読んでみると公式サイトに書かれていることがどうやって実現されているか参考になると思います。
ソースコード該当部分
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/03 01:58