当前位置: 首页 > news >正文

vue 列表渲染

v-for

我们可以使用 v-for 指令基于一个数组来渲染一个列表。v-for 指令的值需要使用 item in items 形式的特殊语法,其中 items 是源数据的数组,而 item 是迭代项的别名

const items = ref([{ message: 'Foo' }, { message: 'Bar' }])
<li v-for="item in items">{{ item.message }}
</li>

在 v-for 块中可以完整地访问父作用域内的属性和变量。v-for 也支持使用可选的第二个参数表示当前项的位置索引。

const parentMessage = ref('Parent')
const items = ref([{ message: 'Foo' }, { message: 'Bar' }])
<li v-for="(item, index) in items">{{ parentMessage }} - {{ index }} - {{ item.message }}
</li>

v-for 变量的作用域和下面的 JavaScript 代码很类似

const parentMessage = 'Parent'
const items = [/* ... */
]items.forEach((item, index) => {// 可以访问外层的 `parentMessage`// 而 `item` 和 `index` 只在这个作用域可用console.log(parentMessage, item.message, index)
})

注意 v-for 是如何对应 forEach 回调的函数签名的。实际上,你也可以在定义 v-for 的变量别名时使用解构,和解构函数参数类似:

<li v-for="{ message } in items">{{ message }}
</li><!-- 有 index 索引时 -->
<li v-for="({ message }, index) in items">{{ message }} {{ index }}
</li>

 

<li v-for="{ message } in items">{{ message }}
</li><!-- 有 index 索引时 -->
<li v-for="({ message }, index) in items">{{ message }} {{ index }}
</li>

对于多层嵌套的 v-for,作用域的工作方式和函数的作用域很类似。每个 v-for 作用域都可以访问到父级作用域:

<li v-for="item in items"><span v-for="childItem in item.children">{{ item.message }} {{ childItem }}</span>
</li>

你也可以使用 of 作为分隔符来替代 in,这更接近 JavaScript 的迭代器语法:

<div v-for="item of items"></div>

 

相关文章:

  • k8s 如何获取加入节点命名
  • 浅谈iOS开发中的自动引用计数ARC
  • 使用llamafile 构建本地大模型运用
  • spring boot的返回值里面含有net.sf.json.JSONObject 报错net.sf.json.JSONNull[“empty“])]
  • <深度学习入门学习笔记P1>——《深度学习》
  • 后端返回文件流pdf 下载
  • 【AIGC调研系列】Starling-LM-7B模型与其他模型相比的优势和劣势
  • 更高效稳定 | 基于ACM32 MCU的编程直流电源应用方案
  • C#WPF控件TextBlock详解
  • 通俗易懂:如何通过JVM参数来调整内存大小?
  • OpenFeign原理整理【Java面试】
  • Gitlab CI---could not read username for xxx: no such device or address
  • flutter 打包成web应用后怎么通过url跳转页面
  • Chrome 插件 tabs API 解析
  • uniApp使用XR-Frame创建3D场景(8)粒子系统
  • 时间复杂度分析经典问题——最大子序列和
  • [rust! #004] [译] Rust 的内置 Traits, 使用场景, 方式, 和原因
  • 【node学习】协程
  • 【跃迁之路】【669天】程序员高效学习方法论探索系列(实验阶段426-2018.12.13)...
  • Angular 响应式表单之下拉框
  • avalon2.2的VM生成过程
  • CSS实用技巧干货
  • Gradle 5.0 正式版发布
  • Hibernate最全面试题
  • JWT究竟是什么呢?
  • Laravel Mix运行时关于es2015报错解决方案
  • Python - 闭包Closure
  • 复杂数据处理
  • 爬虫进阶 -- 神级程序员:让你的爬虫就像人类的用户行为!
  • 微信小程序上拉加载:onReachBottom详解+设置触发距离
  • 详解移动APP与web APP的区别
  • 白色的风信子
  • kubernetes资源对象--ingress
  • SAP CRM里Lead通过工作流自动创建Opportunity的原理讲解 ...
  • Spring第一个helloWorld
  • 你学不懂C语言,是因为不懂编写C程序的7个步骤 ...
  • ​软考-高级-信息系统项目管理师教程 第四版【第19章-配置与变更管理-思维导图】​
  • (AngularJS)Angular 控制器之间通信初探
  • (二)pulsar安装在独立的docker中,python测试
  • (三)Hyperledger Fabric 1.1安装部署-chaincode测试
  • (十八)用JAVA编写MP3解码器——迷你播放器
  • (十五)Flask覆写wsgi_app函数实现自定义中间件
  • (转)淘淘商城系列——使用Spring来管理Redis单机版和集群版
  • (转)微软牛津计划介绍——屌爆了的自然数据处理解决方案(人脸/语音识别,计算机视觉与语言理解)...
  • (转载)从 Java 代码到 Java 堆
  • .net Application的目录
  • .NET BackgroundWorker
  • .NET Core IdentityServer4实战-开篇介绍与规划
  • .NET 分布式技术比较
  • .Net8 Blazor 尝鲜
  • .net连接MySQL的方法
  • .NET学习全景图
  • @ 代码随想录算法训练营第8周(C语言)|Day57(动态规划)
  • @vue/cli 3.x+引入jQuery
  • [ vulhub漏洞复现篇 ] Apache Flink目录遍历(CVE-2020-17519)