Vue.js v-for
一、對陣列的迭代
<!DOCTYPE html> <html> <head> <title>Welcome to Vue</title> <script src="https://unpkg.com/vue"></script> </head> <body> <div id="app"> <ul> <li v-for="item in characters"> {{item}} </li> </ul> </div> <script> var vm = new Vue({ el: '#app', data: { characters: ["a", "b", "c"] } }) </script> </body> </html>
執行結果為
二、常數迭代
<!DOCTYPE html> <html> <head> <title>Welcome to Vue</title> <script src="https://unpkg.com/vue"></script> </head> <body> <div id="app"> <ul> <li v-for="item in 3"> {{item}} </li> </ul> </div> <script> var vm = new Vue({ el: '#app', data: { } }) </script> </body> </html>
執行結果為
三、對物件的迭代
<!DOCTYPE html> <html> <head> <title>Welcome to Vue</title> <script src="https://unpkg.com/vue"></script> </head> <body> <div id="app"> <ul> <li v-for="(item, index) in list"> {{index}} - {{item.name}} </li> </ul> </div> <script> var vm = new Vue({ el: '#app', data: { list: [ { id: '111', name: '電器' }, { id: '222', name: '水果' }, { id: '333', name: '雨衣' }, ], } }) </script> </body> </html>
執行結果為
四、v-for 與 key 的指定
<!DOCTYPE html> <html> <head> <title>Welcome to Vue</title> <script src="https://unpkg.com/vue"></script> </head> <body> <div id="app"> <ul> <li v-for="(item, index) in list"> <label>{{item.id}}</label> <input type="text" :placeholder="item.name" /> </li> </ul> </div> <script> var vm = new Vue({ el: '#app', data: { list: [ { id: '111', name: '電器' }, { id: '222', name: '水果' }, { id: '333', name: '雨衣' }, ], } }) </script> </body> </html>
使用 v-for 所跑出的畫面如下,一切看似正常無誤
但現在我們要在 input tag 輸入自訂的英文名稱
後事於 console 端,對來源陣列做 vm.list.reverse();,
結果發現元素確實是 reverse 了,但是我們所輸入的資料卻沒跟著連動。
此時此刻,請指定 key 值,指向 list 中的 id
<!DOCTYPE html> <html> <head> <title>Welcome to Vue</title> <script src="https://unpkg.com/vue"></script> </head> <body> <div id="app"> <ul> <li v-for="(item, index) in list" :key="item.id"> <label>{{item.id}}</label> <input type="text" :placeholder="item.name" /> </li> </ul> </div> <script> var vm = new Vue({ el: '#app', data: { list: [ { id: '111', name: '電器' }, { id: '222', name: '水果' }, { id: '333', name: '雨衣' }, ], } }) </script> </body> </html>
即可解決資料輸入連動問題
參考資料: