代碼參考:/lesson04/01. v-for指令.htmlhtml
使用v-for="(item, index) in items"就能夠將數組或對象中的數據循環輸出。git
JavaScript:github
let vm = new Vue({
el: '#app', // 根元素或掛載點。
data: {
users: [
{ name: 'lee', password: '123456' },
{ name: 'zhangsan', password: '654321' },
{ name: 'lisi', password: '111111' },
],
usersObj: {
lee: '123456',
zhangsan: '654321',
lisi: '111111'
}
}
})
複製代碼
HTML:數組
<div id="app">
<ul>
<li v-for="(item, index) in users" :key="index">
{{index}}.
用戶名:{{item.name}}
密碼:{{item.password}}
</li>
</ul>
<ol>
<li v-for="(value, key) in usersObj" :key="index">
用戶名:{{key}}
密碼:{{value}}
</li>
</ol>
</div>
複製代碼
代碼參考:/lesson04/02. v-for指令循環字符串、數字.htmlbash
v-for指令除了常規循環數組、對象外,還能夠循環字符串和數字,須要注意的是,循環數字時默認從1開始。app
JavaScript:less
let vm = new Vue({
el: '#app', // 根元素或掛載點。
data: {
str: 'Vuejs Tutorial'
}
})
複製代碼
HTML:性能
<div id="app">
<ul>
<li v-for="(item, index) in str" :key="index">
{{item}}
</li>
</ul>
<ul>
<li v-for="index in 10" :key="index">
{{index}}
</li>
</ul>
</div>
複製代碼
在v-for循環中,爲循環的標籤添加key屬性是必須的。 添加key屬性的緣由要從虛擬DOM提及。通俗地說,虛擬DOM就是一個JSON,假設咱們有一段這樣的HTML:ui
<ul>
<li>
<span></span>
<strong></strong>
</li>
<li>
<span></span>
<strong></strong>
</li>
</ul>
複製代碼
Vue在執行時,會將這個結構解析成相似於這樣的形式:spa
{
tag: 'ul',
children: [
{
tag: 'li',
children: [
{
tag: 'span',
tag: 'strong'
}
]
},
{
tag: 'li',
children: [
{
tag: 'span',
tag: 'strong'
}
]
}
]
}
複製代碼
在數據更新時,Vue會先在虛擬DOM中判斷將要修改的內容,也能夠在積累必定更新以後,再一次性渲染到頁面中,這樣能夠減小頁面渲染的次數,增長性能。
假設咱們有一個數組的數據,在咱們進行增刪改查操做時,咱們不但願進行每次操做的時候,將整個列表所有從新渲染,而Vue很難判斷咱們操做的是哪一個item。
例如咱們將items[1]替換成其餘值,Vue很難判斷它是否被替換。固然Vue內部會生成一個key值,但這個值與咱們傳入的數據無關,所以須要咱們提供一個id進行判斷。
同時爲了保證數據的惟一性,key必須是惟一的,且不可改變。