当前位置:   article > 正文

vue中的v-for循环_vue v-for

vue v-for

 1.v-for遍历普通数组

in前面如果是一个变量,那么该变量保存的是数组中的数据in前面如果是两个变量,那么第一个变量保存的是数组中的数据,第二个变量保存的是下标

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. <title>Document</title>
  8. </head>
  9. <body>
  10. <div id="app">
  11. <!-- 绑定事件 v-on: 简写为@ -->
  12. <button @click="add">点击在数组最后添加元素</button>
  13. <ul style="list-style-type: none;">
  14. <!-- item是数组里面的元素 index是数组的下标 -->
  15. <li v-for="(item,index) in list">{{index}}-{{item}}</li>
  16. </ul>
  17. </div>
  18. <script src="/vue.js"></script>
  19. <script>
  20. new Vue({
  21. el: '#app',
  22. data: {
  23. list: ['猪方', '战神', '小金子', '楠神']
  24. },
  25. methods: {
  26. add() {
  27. this.list.push('黑牛')
  28. }
  29. },
  30. })
  31. </script>
  32. </body>
  33. </html>

2.v-for遍历对象

如果是一个变量,那么保存的是对象中的属性值

如果是两个变量,那么第一个变量保存的是属性值,第二个变量保存的是属性名

如果是三个变量,那么第一个变量保存的是属性值,第二个变量保存的是属性名,第三个变量保存的是下标

v-for="o1 in obj"          o1:属性值

v-for="(o1,o2) in obj"     o1:属性值  o2:属性名


v-for="(o1,o2,o3) in obj"  o1:属性值  o2:属性名  o3:下标
 

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. <title>Document</title>
  8. </head>
  9. <body>
  10. <div id="app">
  11. <ul>
  12. <li v-for="item in obj">{{item}}</li>
  13. <hr>
  14. <li v-for="(val,key) in obj">{{ key }}-{{ val }}</li>
  15. </ul>
  16. </div>
  17. <script src="./vue.js"></script>
  18. <script>
  19. new Vue({
  20. el: '#app',
  21. data: {
  22. obj: {
  23. name: '卡拉米',
  24. age: 16,
  25. sex: '男',
  26. }
  27. }
  28. })
  29. </script>
  30. </body>
  31. </html>

3.v-for循环数字

in后面不仅可以放数组、对象数组、对象,还可以放数字

在in前面用一个变量存储当前次数,注意:此变量是从1开始,而不是从0开始

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. <title>Document</title>
  8. </head>
  9. <body>
  10. <div id="app">
  11. <ul style="list-style-type: none;">
  12. <!-- v-for='遍历的数 in 遍历的范围' -->
  13. <li v-for="num in 9">{{num}}</li>
  14. </ul>
  15. </div>
  16. <script src="/vue.js"></script>
  17. <script>
  18. new Vue({
  19. el: '#app',
  20. })
  21. </script>
  22. </body>
  23. </html>

4. Key是什么?

Key 特殊属性主要用做 Vue 的虚拟 DOM 算法在将新节点列表与旧列表进行比较时识别 VNode 的提示。在没有键的情况下,Vue 使用一种算法来最小化元素移动,并尝试尽可能多地就地修补/重用相同类型的元素。使用键,它将根据键的顺序更改对元素进行重新排序,并且不再存在键的元素将始终被删除/销毁。

 5.有无Key值不同调用方法

Vue内部会对有无Key值的for循环进行不同方法的处理

(1) patchKeyedChildren

有 Key, 进行 patchKeyedChildren

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. <title>Document</title>
  8. </head>
  9. <body>
  10. <div id="app">
  11. <!-- @click="list.splice(下标,删除的数量,添加的元素)" -->
  12. <button @click="list.splice(1,0,{name:'狗屎',age:11,sex:'男',id:4})">点击添加对象</button>
  13. <ul>
  14. <li v-for="item in list" :key="item.id">
  15. <!-- 单选框 -->
  16. <input type="checkbox">
  17. <!-- 行内元素 -->
  18. <span>{{item.name}}</span>
  19. </li>
  20. </ul>
  21. </div>
  22. <script src="/vue.js"></script>
  23. <script>
  24. new Vue({
  25. el:'#app',
  26. data:{
  27. list:[
  28. {name:'战神',age:18,sex:'男',id:1},
  29. {name:'金子',age:18,sex:'男',id:2},
  30. {name:'铜牌',age:18,sex:'男',id:3}
  31. ]
  32. }
  33. })
  34. </script>
  35. </body>
  36. </html>

(2)patchUnKeyedChildren

没有 Key ,进行 patchUnKeyedChildren

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. <title>Document</title>
  8. </head>
  9. <body>
  10. <div id="app">
  11. <!-- @click="list.splice(下标,删除的数量,添加的元素)" -->
  12. <button @click="list.splice(1,0,{name:'狗屎',age:11,sex:'男',id:4})">点击添加对象</button>
  13. <ul>
  14. <li v-for="item in list">
  15. <!-- 单选框 -->
  16. <input type="checkbox">
  17. <!-- 行内元素 -->
  18. <span>{{item.name}}</span>
  19. </li>
  20. </ul>
  21. </div>
  22. <script src="/vue.js"></script>
  23. <script>
  24. new Vue({
  25. el:'#app',
  26. data:{
  27. list:[
  28. {name:'战神',age:18,sex:'男',id:1},
  29. {name:'金子',age:18,sex:'男',id:2},
  30. {name:'铜牌',age:18,sex:'男',id:3}
  31. ]
  32. }
  33. })
  34. </script>
  35. </body>
  36. </html>

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号