当前位置:首页 > 编程笔记 > 正文
已解决

v-for列表渲染

来自网友在路上 157857提问 提问时间:2023-10-24 08:23:10阅读次数: 57

最佳答案 问答题库578位专家为你答疑解惑

一、v-for迭代数组

<li v-for="(e,index) in emp" :key="e.id">编号{{index+1}} 名字{{e.name}} 年龄{{e.age}}
</li>
  • e 是循环数组中的每个元素的别名
  • index 是当前循环的下表,从0开始
  • :key 的作用: 是为了给 Vue 一个提示, 以便它可以跟踪每个节点的唯一标识,它会 基于 key 的变化重新排列元素顺序,并且会移除 key 不存在的元素==

运行效果如下:

二、v-for 迭代对象

<li v-for="(value,key,index) in user" :key="index">第{{index+1}} 个属性为:{{key}} ={{value}}
</li>

 value是属性值,key是属性名,index索引值(从0开始),运行效果如下:

 注意:循环的属性顺序在不同js引擎是不一定的,Object.keys()

三、v-if和v-for同时使用时(注意)

需求:  如果年龄大于6666不显示

不推荐v-if和v-for同时作用到同一元素上

作用在同一元素上:

  •      vue3: 会先执行v-if,再执行v-for
  •      vue2: 会先执行v-for,再执行v-if
  •      因为vue3和vue2执行的顺序不相同,不推荐v-if和v-for同时作用到同一元素上,使用在同一元素上会报如下错误:vue.global.js:1661 [Vue warn]: Property "e" was accessed during render but is not defined on instance. 

解决方式:分开使用,不作用同一元素上

eg:           

<ul><template v-for="e in emp" :key="e.id"><li v-if="e.age > 6666">{{e.name}} - {{e.age}}</li>         </template>
</ul>

   *在template元素上循环,循环出来html查看不到template,会自动移除它

完整代码例子:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>v-for</title>
</head>
<body><div id="app"><h3>v-for迭代数组</h3><!--<li v-for="(e,index) in emp" :key="e.id">e 是循环数组中的每个元素的别名index 是当前循环的下表,从0开始--><li v-for="(e,index) in emp" :key="e.id">编号{{index+1}} 名字{{e.name}} 年龄{{e.age}}</li><h3>v-for 迭代对象</h3><!--value是属性值,key是属性名,index索引值(从0开始)注意:循环的属性顺序在不同js引擎是不一定的,Object.keys()--><li v-for="(value,key,index) in user" :key="index">第{{index+1}} 个属性为:{{key}} ={{value}}</li><h3>v-if和v-for同时使用时(注意)</h3><!--不推荐v-if和v-for同时作用到同一元素上作用在同一元素上:vue3: 会先执行v-if,再执行v-forvue2: 会先执行v-for,再执行v-if因为vue3和vue2执行的顺序不相同,不推荐v-if和v-for同时作用到同一元素上解决方式:分开使用,不作用同一元素上需求:如果年龄大于6666不显示在template元素上循环,循环出来html查看不到template,会自动移除它--><ul><template v-for="e in emp" :key="e.id"><li v-if="e.age > 6666">{{e.name}} - {{e.age}}</li></template></ul></div><script src="./node_modules/vue/dist/vue.global.js"></script><script type="text/javascript">const {createApp} = Vue;const app=createApp({data(){return{emp:[ //数组{id:0,name:'测试1',age:'555'},{id:1,name:'测试2',age:'6666'},{id:2,name:'测试3',age:'7777'}],user:{ //对象account: 55555,password: 9988999}}}}).mount("#app");console.log("app",app);</script>
</body>
</html>

查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"v-for列表渲染":http://eshow365.cn/6-23163-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!