当前位置:   article > 正文

Vue 常用指令 v-for 标签循环展示数据_v-for item unused

v-for item unused

v-for指令的作用是将作为模板的那个标签,还有内部的内容,根据循环的次数拷贝若干份。

v-for:根据数据生成列表结构,并且是响应式的,可以十分便捷的操作列表结构了。至于是什么样的列表,就看你指令使用的位置了,列表的生成依赖于数据,所以先去定义数据。

它结合的类型挺多的,数组,对象,迭代器,字符串,最常使用的是数组,里使用数组来演示。

这里多个的是li标签,这里就使用v-for指令去生成多个li。如果li中有内容,那么每个生成的标签就会将内容包含进去。

v-for指令的作用是将作为模板的那个标签,还有内部的内容,根据循环的次数拷贝若干份。item的值是可以使用的,item的值可以结合其他指令,比如使用v-bind和v-on指令。

除了数组的每项数据之外,数组的索引页也是比较常用的。

 item和index都是可以修改其名称的。

如果数组的每一项不是数字,而是对象或者其他复杂的类型,那么item代表这个对象,要获取内部的值要结合.语法。如果不使用点语法,那么会将整个对象渲染出来。

v-for还有个特点,比如数组的长度发生变化了,比如添加了或者删除了,那么生成的列表也会发生改变。

可以看到v-for指令是可以结合v-bind指令的:

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>首页</title>
  6. <link href="" type="text/css" rel="stylesheet"/>
  7. <script src="https://unpkg.com/vue@3"></script>
  8. <style type="text/css">
  9. </style>
  10. </head>
  11. <body>
  12. <div id="vue">
  13. <ul type="circle">
  14. <li v-for="(item,index) in arr">
  15. number:{{ item }} index:{{ index+1 }}
  16. </li>
  17. <h2 v-for="item in objarr" v-bind:title="item.name">
  18. {{ item }}
  19. </h2>
  20. <h1 v-for="item in objarr">
  21. {{ item.name }}
  22. </h1>
  23. </ul>
  24. </div>
  25. <script type="text/javascript">
  26. const HelloVueApp = {
  27. data(){
  28. return{
  29. arr:[1,2,3,4],
  30. objarr:[
  31. {
  32. name: "lucas",
  33. id : 1
  34. },
  35. {
  36. name: "jerry",
  37. id: 2
  38. }
  39. ]
  40. }
  41. }
  42. }
  43. //挂载到html当中
  44. Vue.createApp(HelloVueApp).mount('#vue')
  45. </script>
  46. </body>
  47. </html>

来测试一下数据的变更,添加增加数据的方法。

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>首页</title>
  6. <link href="" type="text/css" rel="stylesheet"/>
  7. <script src="https://unpkg.com/vue@3"></script>
  8. <style type="text/css">
  9. </style>
  10. </head>
  11. <body>
  12. <div id="vue">
  13. <button type="button" @click="add()">add</button>
  14. <button type="button" @click="remove()">remove</button>
  15. <ul type="circle">
  16. <li v-for="(item,index) in arr">
  17. number:{{ item }} index:{{ index+1 }}
  18. </li>
  19. <h2 v-for="item in objarr" v-bind:title="item.name">
  20. {{ item }}
  21. </h2>
  22. <h1 v-for="item in objarr">
  23. {{ item.name }}
  24. </h1>
  25. </ul>
  26. </div>
  27. <script type="text/javascript">
  28. const HelloVueApp = {
  29. data(){
  30. return{
  31. arr:[1,2,3,4],
  32. objarr:[
  33. {
  34. name: "lucas",
  35. id : 1
  36. },
  37. {
  38. name: "jerry",
  39. id: 2
  40. }
  41. ]
  42. }
  43. },
  44. methods:{
  45. add:function(){
  46. this.objarr.push(
  47. {name: "lisa",id: 3}
  48. );
  49. },
  50. remove:function(){
  51. //移除最左边的元素
  52. this.objarr.shift();
  53. }
  54. }
  55. }
  56. //挂载到html当中
  57. Vue.createApp(HelloVueApp).mount('#vue')
  58. </script>
  59. </body>
  60. </html>

--------------------------------------------------------------------------------------------------------------------------------

 v-for:就地更新

<!--for循环时,需要指定属性是唯一的key -->

<li v-for="(val,index)in myArray2":key="val.id">

Vue 正在更新使用 v-for 渲染的元素列表时,它默认使用 就地更新 的策略。如果数据项的顺序
被改变, Vue 将不会移动 DOM 元素来匹配数据项的顺序,而是就地更新每个 元素,并且确保它们在每个索引位置正确渲染。
为了给 Vue 一个提示,以便它能跟踪每个节点的身份,从而重用和重新排序现有元素,你需要为每项提供一个唯一的 key 属性 :
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>首页</title>
  6. <link href="" type="text/css" rel="stylesheet"/>
  7. <script src="https://unpkg.com/vue@3"></script>
  8. <style type="text/css">
  9. </style>
  10. </head>
  11. <body>
  12. <div id="vue">
  13. <ul>
  14. <li v-for="(item,index) in userinfo">
  15. {{item.id}}
  16. <input type="text" :value="item.name" :key="item.id">
  17. <button type="button" @click="remove(index)">删除</button>
  18. </li>
  19. </ul>
  20. </div>
  21. <script type="text/javascript">
  22. const HelloVueApp = {
  23. data(){
  24. return{
  25. userinfo:[{id:1,name:"lucas",age:20},{id:2,name:"guanchunyan",age:18},{id:3,name:"jerry",age:30}],
  26. }
  27. },
  28. methods:{
  29. remove:function(index){
  30. this.userinfo.splice(index,1)
  31. }
  32. }
  33. }
  34. //挂载到html当中
  35. Vue.createApp(HelloVueApp).mount('#vue')
  36. </script>
  37. </body>
  38. </html>

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

闽ICP备14008679号