当前位置:   article > 正文

Vue.js列表渲染指令v-for_用vue.jsv-for

用vue.jsv-for

目录

一、原理概述

二、基本用法

(1)v-for循环普通数组

(2)v-for循环对象

(3)v-for循环对象数组

(4)v-for迭代整数 


一、原理概述

        v-for指令时在模板编译的代码生成阶段实现的,当遍历数组或对象时需要使用列表渲染指令v-for。当Vue.js用v-for正在更新已渲染过的元素列表时,它默认用"就地复用"策略。如果数据项的数据被改变,Vue.js将不再移动DOM元素来匹配数据项的改变,而是简单复用此处每个元素,并确保它在特定索引下显示已被渲染过的每个元素。

二、基本用法

        v-for是Vue.js的循环语句,它的表达式需要结合着in或者of来使用,类似item in items的形式。

(1)v-for循环普通数组

示例:

  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. <script src="../../vue-2.7.14.js"></script>
  9. <style>
  10. * {
  11. margin: 0;
  12. padding: 0;
  13. }
  14. #root {
  15. width: 800px;
  16. height: 600px;
  17. background-color: yellowgreen;
  18. margin: 0 auto;
  19. text-align: center;
  20. padding: 30px;
  21. }
  22. .basic {
  23. margin: 0 auto;
  24. border: 1px solid black;
  25. }
  26. </style>
  27. </head>
  28. <body>
  29. <div id="root">
  30. <h2>v-for遍历数组</h2>
  31. <div class="basic">
  32. <p v-for="(item,index) in lists" :key="index">
  33. {{index}}------{{item}}
  34. </p>
  35. </div>
  36. </div>
  37. <script>
  38. const vm = new Vue({
  39. el: '#root',
  40. data: {
  41. lists:["java程序设计","android程序设计","php程序设计","呵呵呵"],
  42. },
  43. methods: {
  44. }
  45. })
  46. </script>
  47. </body>
  48. </html>

执行结果:

        在表达式中,lists数组item当前一条数据index代表当前索引值。列表渲染也可以用in来代替of作为分隔符。代码中还有一个key属性,key属性可以提高循环的性能

(2)v-for循环对象

示例:

  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. <script src="../../vue-2.7.14.js"></script>
  9. <style>
  10. * {
  11. margin: 0;
  12. padding: 0;
  13. }
  14. #root {
  15. width: 800px;
  16. height: 600px;
  17. background-color: yellowgreen;
  18. margin: 0 auto;
  19. text-align: center;
  20. padding: 30px;
  21. }
  22. .basic {
  23. margin: 0 auto;
  24. border: 1px solid black;
  25. line-height: 30px;
  26. }
  27. </style>
  28. </head>
  29. <body>
  30. <div id="root">
  31. <h2>v-for遍历对象</h2>
  32. <div class="basic">
  33. <p v-for="(value,name,index) in car">
  34. {{index}}-----{{name}}------{{value}}
  35. </p>
  36. </div>
  37. </div>
  38. <script>
  39. const vm = new Vue({
  40. el: '#root',
  41. data: {
  42. car: {
  43. name: "奥迪a8",
  44. color: "黑色",
  45. Number: "124215dhsdhsdf"
  46. }
  47. },
  48. methods: {
  49. }
  50. })
  51. </script>
  52. </body>
  53. </html>

执行结果:

(3)v-for循环对象数组

示例:

  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. <script src="../../vue-2.7.14.js"></script>
  9. <style>
  10. * {
  11. margin: 0;
  12. padding: 0;
  13. }
  14. #root {
  15. width: 800px;
  16. height: 600px;
  17. background-color: yellowgreen;
  18. margin: 0 auto;
  19. text-align: center;
  20. padding: 30px;
  21. }
  22. .basic {
  23. margin: 0 auto;
  24. border: 1px solid black;
  25. }
  26. </style>
  27. </head>
  28. <body>
  29. <div id="root">
  30. <h2>v-for遍历对象数组</h2>
  31. <div class="basic">
  32. <p v-for="(item,index) in persons">
  33. {{index}}-----{{item.id}}-----{{item.name}}-----{{item.age}}
  34. </p>
  35. </div>
  36. </div>
  37. <script>
  38. const vm = new Vue({
  39. el: '#root',
  40. data: {
  41. persons: [
  42. { id: "0001", name: "张三", age: "18" },
  43. { id: "0002", name: "李四", age: "18" },
  44. { id: "0003", name: "王五", age: "28" }
  45. ]
  46. },
  47. methods: {
  48. }
  49. })
  50. </script>
  51. </body>
  52. </html>

执行结果:

(4)v-for迭代整数 

示例:

  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. <script src="../../vue-2.7.14.js"></script>
  9. <style>
  10. * {
  11. margin: 0;
  12. padding: 0;
  13. }
  14. #root {
  15. width: 800px;
  16. height: 600px;
  17. background-color: yellowgreen;
  18. margin: 0 auto;
  19. text-align: center;
  20. padding: 30px;
  21. }
  22. .basic {
  23. margin: 0 auto;
  24. border: 1px solid black;
  25. }
  26. </style>
  27. </head>
  28. <body>
  29. <div id="root">
  30. <h2>v-for迭代整数</h2>
  31. <div class="basic">
  32. <p v-for="count of 10">
  33. {{count}}
  34. </p>
  35. </div>
  36. </div>
  37. <script>
  38. const vm = new Vue({
  39. el: '#root',
  40. })
  41. </script>
  42. </body>
  43. </html>

执行结果:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/379209
推荐阅读
相关标签
  

闽ICP备14008679号