一、循环普通数据

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <meta http-equiv="X-UA-Compatible" content="ie=edge">
  7. <title>Document</title>
  8. <script src="./lib/vue-2.4.0.js"></script>
  9. </head>
  10. <body>
  11. <div id="app">
  12. <p>{{list[0]}}</p>
  13. <p>{{list[1]}}</p>
  14. <p>{{list[2]}}</p>
  15. <p>{{list[3]}}</p>
  16. <p>{{list[4]}}</p>
  17. <p>--------------------------------------------</p>
  18. <p v-for="(item, i) in list">索引值:{{i}} --- 每一项:{{item}}</p>
  19. </div>
  20. <script>
  21. // 创建 Vue 实例,得到 ViewModel
  22. var vm = new Vue({
  23. el: '#app',
  24. data: {
  25. list: [1, 2, 3, 4, 5, 6]
  26. },
  27. methods: {}
  28. });
  29. </script>
  30. </body>
  31. </html>

二、循环对象数组

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <meta http-equiv="X-UA-Compatible" content="ie=edge">
  7. <title>Document</title>
  8. <script src="./lib/vue-2.4.0.js"></script>
  9. </head>
  10. <body>
  11. <div id="app">
  12. <p v-for="(user, i) in list">Id:{{ user.id }} --- 名字:{{ user.name }} --- 索引:{{i}}</p>
  13. </div>
  14. <script>
  15. // 创建 Vue 实例,得到 ViewModel
  16. var vm = new Vue({
  17. el: '#app',
  18. data: {
  19. list: [
  20. { id: 1, name: 'zs1' },
  21. { id: 2, name: 'zs2' },
  22. { id: 3, name: 'zs3' },
  23. { id: 4, name: 'zs4' }
  24. ]
  25. },
  26. methods: {}
  27. });
  28. </script>
  29. </body>
  30. </html>

三、循环对象

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <meta http-equiv="X-UA-Compatible" content="ie=edge">
  7. <title>Document</title>
  8. <script src="./lib/vue-2.4.0.js"></script>
  9. </head>
  10. <body>
  11. <div id="app">
  12. <!-- 注意:在遍历对象身上的键值对的时候, 除了 val key ,在第三个位置还有 一个 索引 -->
  13. <p v-for="(val, key, i) in user">值是: {{ val }} --- 键是: {{key}} -- 索引: {{i}}</p>
  14. </div>
  15. <script>
  16. // 创建 Vue 实例,得到 ViewModel
  17. var vm = new Vue({
  18. el: '#app',
  19. data: {
  20. user: {
  21. id: 1,
  22. name: '托尼·屎大颗',
  23. gender: '男'
  24. }
  25. },
  26. methods: {}
  27. });
  28. </script>
  29. </body>
  30. </html>

四、循环数字

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <meta http-equiv="X-UA-Compatible" content="ie=edge">
  7. <title>Document</title>
  8. <script src="./lib/vue-2.4.0.js"></script>
  9. </head>
  10. <body>
  11. <div id="app">
  12. <!-- in 后面还可以放数字 -->
  13. <!-- 注意:如果使用 v-for 迭代数字的话,前面的 count 值从 1 开始 -->
  14. <p v-for="count in 10">这是第 {{ count }} 次循环</p>
  15. </div>
  16. <script>
  17. // 创建 Vue 实例,得到 ViewModel
  18. var vm = new Vue({
  19. el: '#app',
  20. data: {},
  21. methods: {}
  22. });
  23. </script>
  24. </body>
  25. </html>

五、循环中key的使用

当 Vue.js 用 v-for 正在更新已渲染过的元素列表时,它默认用 “就地复用” 策略。如果数据项的顺序被改变,Vue将不是移动 DOM 元素来匹配数据项的顺序, 而是简单复用此处每个元素,并且确保它在特定索引下显示已被渲染过的每个元素。

为了给 Vue 一个提示,以便它能跟踪每个节点的身份,从而重用和重新排序现有元素,你需要为每项提供一个唯一 key 属性。

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <meta http-equiv="X-UA-Compatible" content="ie=edge">
  7. <title>Document</title>
  8. <script src="./lib/vue-2.4.0.js"></script>
  9. </head>
  10. <body>
  11. <div id="app">
  12. <div>
  13. <label>Id:
  14. <input type="text" v-model="id">
  15. </label>
  16. <label>Name:
  17. <input type="text" v-model="name">
  18. </label>
  19. <input type="button" value="添加" @click="add">
  20. </div>
  21. <!--:key的作用:保证数据和页面的关联,让数据和页面一一对应。这个地方如果不加key,在给某一个input打钩之后再新增数据就会出现问题-->
  22. <!-- 注意: v-for 循环的时候,key 属性的值只能是number或者string,否则报错 -->
  23. <p v-for="item in list" :key="item.id">
  24. <input type="checkbox">{{item.id}} --- {{item.name}}
  25. </p>
  26. </div>
  27. <script>
  28. // 创建 Vue 实例,得到 ViewModel
  29. var vm = new Vue({
  30. el: '#app',
  31. data: {
  32. id: '',
  33. name: '',
  34. list: [
  35. { id: 1, name: '李斯' },
  36. { id: 2, name: '嬴政' },
  37. { id: 3, name: '赵高' },
  38. { id: 4, name: '韩非' },
  39. { id: 5, name: '荀子' }
  40. ]
  41. },
  42. methods: {
  43. add() { // 添加方法
  44. this.list.unshift({ id: this.id, name: this.name })
  45. }
  46. }
  47. });
  48. </script>
  49. </body>
  50. </html>