<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <script src="htt ...
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <script src="https://cdn.jsdelivr.net/npm/vue"></script> <title>vue中使用v-for</title> </head> <body> <div id="app"> <h3>迴圈列表</h3> <table> <thead> <tr> <th>序號</th> <th>書名</th> <th>作者</th> </tr> </thead> <tbody> <tr v-for="(book,index) in books" :key="book.title"> <td>{{index+1}}</td> <td>{{book.title}}</td> <td>{{book.author}}</td> </tr> </tbody> </table> </div> <div id="app2"> <h3>迴圈對象</h3> <div v-for="(value,key) in person"> {{key}}:{{value}} </div> </div> <script> new Vue({ el: '#app', data: { books: [{ title: '水滸傳', author: '施耐庵', }, { title: '三國演義', author: '羅貫中', }, { title: '西游記', author: '吳承恩', }, { title: '紅樓夢', author: '曹雪芹', }, ] } }) </script> <script> new Vue({ el: '#app2', data: { person: { name: 'Xsan', age: 26, } } }) </script> </body> </html>
"(book,index) in books"是迴圈表達式,式中的“(book,index)”不可調換位置,對象,第二個才是索引,且索引是從0開始的,所以在下麵寫序號時,才會是“+1” 第一個永遠為對象。
迴圈狀態保持。預設情況下,如果數組中的順序發生變化,或者個數發生變化導致重新渲染,那麼vue會重新利用之前的元素,而不會重新排序,這樣在某些情況下可能是想要的,但是絕大部分情況可能不是我們想要的,這時候可以添加key屬性。可以只能夠是number和str類型,那麼在迴圈時一般使用迴圈出來的對象的某個唯一值,不要使用index來做key,這樣雖然用了,但是沒有效果。在vue2.2.x以上,在自定義組件上使用v-for,key是必須要寫的。