Vue - v-for 指令详解

news2024/11/26 23:38:27

1. 渲染列表

首先,让我们看看如何使用 v-for 渲染一个简单的列表。在 Vue.js 中,我们可以使用 v-for 来遍历数组,并根据数组中的每个元素渲染相应的内容。

<template>
  <div>
    <!-- 使用 v-for 渲染列表 -->
    <ul>
      <li v-for="item in items" :key="item.id">
        {{ item.message }}
      </li>
    </ul>
  </div>
</template>

<script>
export default {
  data() {
    return {
      items: [
        { id: 1, message: "A" },
        { id: 2, message: "B" }
      ]
    };
  }
};
</script>

<style scoped>
</style>

在上述例子中,通过 v-for="item in items" 遍历了 items 数组,并使用 :key="item.id" 来确保每个列表项都有一个唯一的标识符。这样做有助于 Vue.js 在处理列表变化时高效更新 DOM。

2. 带索引的列表

有时,我们可能需要在列表中显示每个元素的索引。Vue.js 提供了在 v-for 中获取索引的方法。

<template>
  <div>
    <!-- 使用 v-for 渲染带索引的列表 -->
    <ul>
      <li v-for="(item, index) in items" :key="item.id">
        {{ index + 1 }}. {{ item.message }}
      </li>
    </ul>
  </div>
</template>

通过 (item, index),我们可以获取到每个元素的索引,并在列表中显示出来。

3. 遍历对象

除了数组,v-for 也可以用于遍历对象。在下面的例子中,我们使用 v-for 遍历了一个对象,并显示了对象的键值对。

<template>
  <div>
    <!-- 使用 v-for 遍历对象 -->
    <ul>
      <li v-for="(value, key) in myObject" :key="key">
        {{ key }}: {{ value }}
      </li>
    </ul>
  </div>
</template>

通过 (value, key),我们可以获取到对象的值和键,并在列表中显示它们。

4. 渲染一段范围值

除了遍历数组和对象,v-for 还可以用于渲染一段范围值。在下面的例子中,我们使用 v-for 渲染了一个包含 1 到 10 的范围。

<template>
  <div>
    <!-- 使用 v-for 渲染一段范围值 -->
    <span v-for="n in 10" :key="n">{{ n }}</span>
  </div>
</template>

这样的用法使得我们可以在模板中生成一系列重复的元素。

5. 在 template 中包含多个元素

有时候,我们需要在 v-for 中包含多个元素。Vue.js 允许我们在 template 标签上使用 v-for,并在其中包含多个元素,而不需要额外的包裹元素。

<template>
  <div>
    <!-- 使用 v-for 在 template 中包含多个元素 -->
    <template v-for="item in items">
      <h3>{{ item.title }}</h3>
      <p>{{ item.description }}</p>
    </template>
  </div>
</template>

在上述例子中,v-for 遍历了 items 数组,并在 template 中包含了多个元素,这样可以更清晰地组织代码结构。

6. 使用 v-if 和 v-for 结合

在实际开发中,我们可能会需要根据某个条件过滤列表项的显示。在这种情况下,我们可以结合使用 v-ifv-for

<template>
  <div>
    <!-- 使用 v-if 和 v-for 结合 -->
    <ul>
      <li v-for="todo in todos" :key="todo.id">
        <template v-if="!todo.isComplete">
          {{ todo.name }}【✓】
        </template>
        <template v-else>
          {{ todo.name }}【X】
        </template>
      </li>
    </ul>
  </div>
</template>

<script>
export default {
  data() {
    return {
      todos: [
        { id: 1, name: "任务 1", isComplete: false },
        { id: 2, name: "任务 2", isComplete: true },
        { id: 3, name: "任务 3", isComplete: false }
      ]
    };
  }
};
</script>

<style scoped>
</style>

完整代码:

<template>
  <div>
    <!-- 使用 v-for 渲染列表 -->
    <ul>
      <li v-for="item in items" :key="item.id">
        {{ item.message }}
      </li>
    </ul>

    <!-- 使用 v-for 渲染带索引的列表 -->
    <ul>
      <li v-for="(item, index) in items" :key="item.id">
        {{ index + 1 }}. {{ item.message }}
      </li>
    </ul>

    <!-- 使用 v-for 遍历对象 -->
    <ul>
      <li v-for="(value, key) in myObject" :key="key">
        {{ key }}: {{ value }}
      </li>
    </ul>

    <!-- 使用 v-for 渲染一段范围值 -->
    <span v-for="n in 10" :key="n">{{ n }}</span>

    <!-- 使用 v-for 在 template 中包含多个元素 -->
    <template v-for="item in items">
      <h3>{{ item.title }}</h3>
      <p>{{ item.description }}</p>
    </template>

    <!-- 使用 v-if 和 v-for 结合 -->
    <!--    当使用v-if结合v-for时,Vue 在渲染时会优先处理v-if,然后再处理v-for。
      因此,当v-if条件不满足时,v-for就无法遍历数据并创建相应的元素,
      这可能导致 Vue 在处理v-for时找不到相应的数据而发出警告。-->
    <!--    <ul>-->
    <!--      <li v-for="todo in todos" v-if="todo && !todo.isComplete" :key="todo.id">-->
    <!--        {{ todo.name }}-->
    <!--      </li>-->
    <!--    </ul>-->
    <ul>
      <li v-for="todo in todos" :key="todo.id">
        <template v-if="!todo.isComplete">
          {{ todo.name }}【✓】
        </template>
        <template v-else>
          {{ todo.name }}【X】
        </template>
      </li>
    </ul>


  </div>
</template>

<script>
export default {
  data() {
    return {
      items: [
        { id: 1, message: "A" },
        { id: 2, message: "B" }
      ],
      myObject: {
        title: "How to do lists in Vue",
        author: "张三",
        publishedAt: "2023-12-28"
      },
      todos: [
        { id: 1, name: "任务 1", isComplete: false },
        { id: 2, name: "任务 2", isComplete: true },
        { id: 3, name: "任务 3", isComplete: false }
      ]
    };
  }
};
</script>

<style scoped>
</style>

在这里插入图片描述

在上述例子中,我们使用 v-if 来根据 todo.isComplete 的值来判断是否显示任务项。这样,我们可以灵活地根据条件来过滤和显示列表中的元素。当使用v-if结合v-for时,Vue 在渲染时会优先处理v-if,然后再处理v-for。因此,当v-if条件不满足时,v-for就无法遍历数据并创建相应的元素,这可能导致 Vue 在处理v-for时找不到相应的数据而发出警告。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1342041.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

计算机与人工智能:共创智能时代的新篇章

计算机与人工智能&#xff1a;共创智能时代的新篇章 在这个科技日新月异的时代&#xff0c;计算机与人工智能&#xff08;AI&#xff09;的结合正以前所未有的速度改变着世界。它们在各自的领域内飞速发展&#xff0c;而当这两者相遇时&#xff0c;它们产生了巨大的能量&#x…

ClickHouse基础知识(六):ClickHouse的副本配置

副本的目的主要是保障数据的高可用性&#xff0c;即使一台 ClickHouse 节点宕机&#xff0c;那么也可以 从其他服务器获得相同的数据。 1. 副本写入流程 2. 配置步骤 ➢ 启动 zookeeper 集群 ➢ 在hadoop101的/etc/clickhouse-server/config.d目录下创建一个名为metrika.xml…

can通信的验收码和屏蔽码怎么计算

方法一&#xff1a;直接用canTest软件并按下图计算&#xff08;借助工具&#xff0c;比较方便&#xff09; 方法二&#xff1a;明白规则

探索Apache Commons Imaging处理图像

第1章&#xff1a;引言 大家好&#xff0c;我是小黑&#xff0c;咱们今天来聊聊图像处理。在这个数字化日益增长的时代&#xff0c;图像处理已经成为了一个不可或缺的技能。不论是社交媒体上的照片编辑&#xff0c;还是专业领域的图像分析&#xff0c;图像处理无处不在。而作为…

RAD Studio 12 安装激活说明及常见问题

目录 RAD Studio 安装说明 RAD Studio 最新的修补程序更新 RAD Studio 产品相关信息 Embarcadero 产品在线注册步骤 单机版授权产品注册注意事项 Embarcadero 产品离线注册步骤 Embarcadero 产品安装次数查询 Embarcadero 序号注册次数限制 EDN账号 - 查询授权序号、下…

idea 插件开发之 HelloWorld

前言 本文使用的 idea 2023.3 版本进行插件入门开发&#xff0c;首先要说明的是 idea 2023 版本及以后的 idea&#xff0c;对插件开发进行了一定程度的变动&#xff1a; 1、创建项目时不再支持 maven 选项 2、必须是 jdk17 及以后版本&#xff08;点击查看官网版本对应关系&…

react 之 美团案例

1.案例展示 2.环境搭建 克隆项目到本地&#xff08;内置了基础静态组件和模版&#xff09; git clone http://git.itcast.cn/heimaqianduan/redux-meituan.git 安装所有依赖 npm i 启动mock服务&#xff08;内置了json-server&#xff09; npm run serve 启动前端服务 npm…

苹果手机打开Microsoft Outlook日历ics文件方法

作为一名经常需要处理各种日程安排的苹果用户&#xff0c;我深知ics文件的重要性。ics文件通常来自于我们日常使用的日历应用&#xff0c;比如Microsoft Outlook&#xff0c;是日程信息的标准格式。但很多时候&#xff0c;当我们尝试打开这些ics文件时&#xff0c;却会遇到种种…

re:Invent 2023技术上新|Amazon DynamoDB与OpenSearch Service的Zero-ETL集成

Amazon DynamoDB 与 Amazon OpenSearch Service 的 Zero-ETL 集成已正式上线&#xff0c;该服务允许您通过自动复制和转换您的 DynamoDB 数据来搜索数据&#xff0c;而无需自定义代码或基础设施。这种 Zero-ETL 集成减少了运营负担和成本&#xff0c;使您能够专注于应用程序。这…

mysql查询出json格式字段中的值

一、使用场景 由于一些特殊数据使用json格式保存到表数据种中了&#xff0c;在查询的时候需要查询出这条数据中json格式中的某个字段 比如&#xff1a;需要将下列字符串中的“nationality”字段单独查询出来 json格式是一个对象 结果&#xff1a; json格式是一个集合 查询结…

2023量子科技十大进展 | 光子盒年度系列

量子力学是20世纪初成熟的理论&#xff0c;一个多世纪以来一直令科学家们感到惊讶、好奇和困惑。尽管该理论具有反直觉的性质&#xff0c;但它却以优异的成绩通过了实验测试&#xff0c;不断揭示出一个与我们的日常经验相去甚远的世界。 时至今日&#xff0c;科学家们仍然忙于操…

CRM诞生到现在历经了哪些发展阶段?CRM系统的五个关键节点

CRM管理系统从被发明到现在&#xff0c;历经多次迭代已经成为一个相对成熟的系统。企业可以靠它管理客户信息&#xff0c;提升盈利能力。今天就来介绍一下CRM的发展历程。 一、CRM系统的雏形 广义上的CRM系统其实可以追溯到古希腊时期。当时的商人靠书写记录自己与客户和合作…

FileZilla的使用主动模式与被动模式

&#x1f3ac; 艳艳耶✌️&#xff1a;个人主页 &#x1f525; 个人专栏 &#xff1a;《产品经理如何画泳道图&流程图》 ⛺️ 越努力 &#xff0c;越幸运 目录 一、FileZilla简介 1、FileZilla是什么&#xff1f; 2、FileZilla的应用场景 二、FileZilla的安装 1、下…

参数归一化-实现时间格式化

文章目录 需求分析具体实现完整源码 不知道大家有没有尝试封装过一个时间格式化的函数啊&#xff0c;在之前我封装的时候&#xff0c;开始是觉得手到擒来&#xff0c;但是实践之后发现写非常的shi啊&#xff0c;大量的分支判断&#xff0c;哪怕是映射起到的作用也只是稍微好一点…

【小程序】如何获取特定页面的小程序码

一、进入到小程序管理后台&#xff0c;进入后点击上方的“工具”》“生成小程序码” 小程序管理后台 二、进入开发者工具&#xff0c;打开对应的小程序项目&#xff0c;复制底部小程序特定页面的路径 三、粘贴到对应位置的文本框&#xff0c;点击确定即可

NCNN环境部署及yolov5pt转ncnn模型转换推理

该内容还未完整&#xff0c;笔记内容&#xff0c;持续补充。 〇开发环境版本 vs2022 cmake3.21.1 ncnn20231027发行版 yolov5s v6.2 vunlkan1.2.198.1 Protobuf3.20.0 Opencv3.4.1 一、模型转换 yolov5s v6.2训练的pt模型&#xff0c;直接导出tourchscript&#xff0c…

鸿蒙APP的代码规范

鸿蒙APP的代码规范是为了确保代码质量、可读性和可维护性而定义的一系列规则和标准。以下是一些建议的鸿蒙APP代码规范&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合作。 1. 代码风格&#xff1a; 采用…

Wish流量推送规则是什么?wish怎么增加流量?-站斧浏览器

Wish流量推送规则是什么&#xff1f; 个性化推送&#xff1a;Wish采用智能化的算法&#xff0c;根据用户的购物历史、浏览记录、搜索行为等数据&#xff0c;为每位用户推送个性化的商品推荐。这种推送方式能够提高商品与用户的匹配度&#xff0c;从而提高转化率。 价格与销量…

视频转换为GIF格式的3种方法

如果你想与朋友分享一个有趣的瞬间或者在社交媒体上发布一些搞笑的短视频&#xff0c;那么GIF格式将会是一个绝佳的选择。因为相比于视频&#xff0c;GIF文件具有更小的文件大小和更好的兼容性。不过&#xff0c;并不是所有人都知道如何将视频转换为GIF格式。不用担心&#xff…

65.乐理基础-打拍子-前附点、后附点

内容来源于&#xff1a;三分钟音乐社 上一个内容&#xff1a;前八后十六、前十六后八拍子-CSDN博客 前附点指的是一个附点八分音符加一个十六分音符的节奏型&#xff0c;如图1。 后附点指的是一个十六分音符加一个附点八分音符的节奏型&#xff0c;如图2。 前附点、后附点这两…