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

模板语法(2)

一、循环

在模板中可以用v-for指令来循环数组,对象等。

1. 循环数组

<script setup name="App">import { reactive } from "vue"const books = reactive([{'title': '三国演义','author': '罗贯中'}, {'title': '水浒传','author': '施耐庵'}, {'title': '西游记','author': '吴承恩'}, {'title': '红楼梦','author': '曹雪芹'}])</script><template><table><thead><tr><th>序号</th><th>标题</th><th>作者</th></tr></thead><tbody><tr v-for="(book, index) in books"><td>{{ index }}</td><td>{{ book.title }}</td><td>{{ book.author }}</td></tr></tbody></table>
</template>

2. 循环对象

循环对象跟循环数组是一样的。并且都可以在循环的时候使用接收多个参数。示例代码如下:

<script setup name="App">import { reactive } from "vue"const person = reactive({"username": "知了","age": 18,"homepage": "https://www.baidu.com/"})</script><template><div v-for="(value, key) in person">{{ key }}:{{ value }}</div>
</template>

3. 保持状态

循环出来的HTML标签,如果没有使用key属性来唯一标识,如果后期的数据发生了更改,默认是会重用的HTML标签,并且标签的顺序不会跟着数据的顺序更改而更改。比如:

 

<script setup name="App">import { reactive } from "vue"const books = reactive(["红楼梦", "水浒传", "三国演义", "西游记"])const changeBooks = () => {books.sort((x, y) => {return 5 - parseInt(Math.random() * 10)});}</script><template><div v-for="(book, index) in books"><label for="book">{{ book }}</label><input type="text" v-bind:placeholder="book"></div><button v-on:click="changeBooks">更换图书</button>
</template>

如果你在某个input标签中输入了值,然后点击了“更换图书”的按钮,你会发现即使数据更改了,input并不会跟着数据的更改而更改,这时候我们只需要在v-for的时候加上一个key属性就可以了。示例代码如下:

<div v-for="(book,index) in books" v-bind:key="book"><label for="book">{{book}}</label><input type="text" v-bind:placeholder="book">
</div>

 注意,key只能是整形,或者是字符串类型,不能为数组或者对象。

4. 触发视图更新

Vue对一些方法进行了包装和变异,以后数组通过这些方法进行数组更新,会出发视图的更新。这些方法如下:

push():添加元素的方法。
books.push("金瓶梅")pop():删除数组最后一个元素。
books.pop()shift():删除数组的第一个元素。
books.shift()unshift(item):在数组的开头位置添加一个元素。
books.unshift('金瓶梅')splice(index,howmany,item1,...,itemX):向数组中添加或者删除或者替换元素。
1 // 向books第0个位置添加元素
2 books.splice(1,0,"金瓶梅")
3 // 下标从0开始,删除2个元素
4 books.splice(0,2)
5 // 下标从0开始,替换2个元素
6 books.splice(0,2,'金瓶梅','骆驼祥子')sort(function):排序。books.sort(function(x,y){// 取两个随机数排序a = Math.random();b = Math.random();return a-b;
});reverse():将数组元素进行反转。 
books.reverse();

5. 覆盖数组

如果是使用ref 函数定义的数组,则可直接赋值,比如:

// ref类型的数组:books是一个数组的ref
let books = ref(["红楼梦", "水浒传", "三国演义", "西游记"])
books.value = ["红楼梦", "水浒传"]

如果是使用reactive 函数定义的数组,则通过以下方式覆盖数组:

// 通过定义成对象的方式
let books = reactive({value: ["红楼梦", "水浒传", "三国演义", "西游记"]
});
books.value = ["红楼梦", "水浒传"]

所以数组建议使用ref 函数来定义。

二、事件绑定 

1. 基本使用

事件绑定就是在HTML元素中,通过v-on绑定事件的。事件代码可以直接放到v-on后面,也可以写成一个函数。示例代码如下:

<script setup name="App">
import { reactive, ref } from "vue"let count = ref(0);const subtract = function (value) {count.value -= value;
}</script><template><p>{{ count }}</p><button v-on:click="count += 1">加</button><button v-on:click="subtract(10)">减10</button>
</template>

 也可以简写成@click 来代替v-on:click

2. 传入event 参数

如果在事件处理函数中,想要获取原生的DOM事件,那么在html代码中,调用的时候,可以传递一个$event参数。示例代码如下:

<button v-on:click="subtract(10,$event)">减10</button>
...
<script>
...
const subtract = function(value,event){this.count -= value;console.log(event);
}
...
</script>

3. 事件修饰符

有时候事件发生,我们可能需要做一些操作。比如针对这个事件要他的默认行为。那么我们可能通过以下代码来实现:

<script setup name="App">
import { reactive, ref } from "vue"let count = ref(0);const gotoWebsite = function (event) {event.preventDefault();window.location = "https://www.360.cn/"
}</script><template><a href="https://www.baidu.com/" v-on:click="gotoWebsite($event)">百度</a>
</template>

那个阻止默认事件执行的代码,我们可以通过click.prevent来实现。示例代码如下:

<a href="https://www.baidu.com/" v-on:click.prevent="gotoWebsite($event)">百度</a>

另外,常见的修饰符还有以下:

  1. .stopevent.stopPropagation,阻止事件冒泡。
  2. .capture:事件捕获。
  3. .once:这个事件只执行一次。
  4. .self:代表当前这个被点击的元素自身。
  5. .passive:在页面滚动的时候告诉浏览器不会阻止默认的行为,从而让滚动更加顺畅

三、ref属性

ref属性用于在script 标签中获取template 中的元素。使用方法如下:

  • template中的某个标签上定义ref属性。
  • script中定义与template中与ref同名的变量。

示例代码如下:

<template><input type="text" ref="usernameInput" placeholder="用户名"/><button @click="showUsername">获取用户名</button>
</template><script setup>
import {ref} from 'vue'let usernameInput = ref()
const showUsername = () => {console.log(usernameInput.value.value);
}
</script>

四、v-model

Vue中的响应式变量是双向的,如果想要通过表单元素(比如input、select)实时修改响应式变量,则可以通过v-model属性实现,示例代码如下:

<script setup>
import {ref} from "vue";
let username = ref("");let category = ref(0);
</script><template>
<div>
<input v-model="username" />
<p>用户名为:{{username}}</p>
</div><div><select v-model="category"><option value="1">Python</option><option value="2">前端</option></select><p>分类为:{{category}}</p>
</div>
</template>

 

 

 

 

 

相关文章:

模板语法(2)

一、循环 在模板中可以用v-for指令来循环数组&#xff0c;对象等。 1. 循环数组 <script setup name"App">import { reactive } from "vue"const books reactive([{title: 三国演义,author: 罗贯中}, {title: 水浒传,author: 施耐庵}, {title: 西…...

从头学PHP之数组输出基本函数

上期我们讲到了数组&#xff0c;数组是个特殊的变量&#xff0c;在程序中的重要程度很高&#xff0c;大部分数据处理的时候会用到这种特殊的变量&#xff0c;那么现在让我们继续深入一下吧。 上期我们打印出了数组的值&#xff0c;用print_r()或者var_dump()这俩函数&#xff0…...

基于SSM+小程序的4S店客户管理系统(汽车2)

&#x1f449;文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1、项目介绍 4S店客户管理系统主要包括管理员、用户、门店三个权限角色 1、管理员实现了首页、个人中心、用户管理、门店管理、车展管理、汽车品牌管理、新闻头条管理、预约试驾管理、我的收藏管理、…...

ZYNQ AXI_Timer 中断

REVIEW 关于ZYNQ中断&#xff1a; ZYNQ PS_GPIO中断-CSDN博客 ZYNQ AXI_GPIO_INT-CSDN博客 ZYNQ 定时器中断-CSDN博客 在一些应用场景中&#xff0c;可能需要使用到多个定时器&#xff0c;除了选择使用 PS 侧其他定时器外&#xff0c;也可以使用 PL 侧逻辑定时器。 1. 今日摸鱼…...

UE5之5.4 第一人称示例代码阅读2 子弹发射逻辑

TP_WeaponComponent.h 看看头文件 暴露了attach weapon和fire给蓝图 这两个函数意义一看名字吧&#xff0c;就是捡起来枪的时候执行&#xff0c;一个就是发射子弹的时候执行 #pragma once#include "CoreMinimal.h" #include "Components/SkeletalMeshComponen…...

Python 实现日期计算与日历格式化输出(万年历)

目录 一、引言 二、需求分析 三、实现思路 四、代码实现 五、代码分析 六、测试与验证 七、总结与展望 在日常的编程中&#xff0c;我们经常会遇到与日期相关的问题&#xff0c;比如计算两个日期之间的天数差、确定某个特定日期是星期几以及格式化输出日历等。本文将详细…...

10.28.2024刷华为OD C题型

文章目录 HJ9HJ10HJ11HJ13HJ17 HJ9 HJ10 HJ11 HJ13 HJ17...

映射问题的解决办法(mybaitis)

最初我用的是注解来操控数据库&#xff08;注释掉的部分&#xff09; Mapper public interface ThreadMapper {// Select("SELECT * FROM thread LIMIT #{page}, #{size}")List<Thread> getListByPage(Param("page") int page, Param("size&qu…...

关于机器学习方向学习的一些建议(过来人)

以下是关于机器学习方向学习的一些建议&#xff1a; 一、扎实的数学基础 线性代数 线性代数是机器学习的基石。矩阵运算在数据表示、模型参数计算等方面无处不在。例如&#xff0c;在多元线性回归中&#xff0c;我们用矩阵来表示自变量和因变量之间的关系。像最小二乘法求解回…...

【云原生】云原生后端:网络架构详解

目录 引言一、微服务间的通信1.1 通信方式概览1.2 HTTP/REST1.3 gRPC1.4 消息队列1.5 GraphQL 二、API网关2.1 API网关架构示例2.2 API网关实现示例 三、服务发现3.1 服务发现实现示例3.2 服务发现的优势 四、网络安全4.1 网络安全最佳实践4.2 网络安全架构示例 总结参考资料 引…...

期货资管子系统框架设计JS路径及源代码分享

期货资管子系统框架设计JS路径及源代码分享 随着期货资管子系统前端技术的飞速发展&#xff0c;JavaScript&#xff08;JS&#xff09;及其相关框架已成为构建这类系统的重要工具。本文将详细介绍一个期货资管子系统框架的设计思路&#xff0c;并分享部分JS路径及源代码&#…...

【YOLO 系列】基于YOLO的工业自动化轴承缺陷检测系统【python源码+Pyqt5界面+数据集+训练代码】

前言 轴承作为机械设备中的关键部件&#xff0c;其性能直接影响到设备的稳定性和寿命。轴承缺陷的早期检测对于预防设备故障、减少维护成本和提高生产效率至关重要。然而&#xff0c;传统的轴承缺陷检测方法往往依赖于人工检查&#xff0c;这不仅效率低下&#xff0c;而且容易…...

Word中Normal.dotm样式模板文件

Normal.dotm文档 首先将自己电脑中C:\Users\自己电脑用户名\AppData\Roaming\Microsoft\Templates路径下的Normal.dotm文件做备份&#xff0c;在下载本文中的Normal.dotm文件&#xff0c;进行替换&#xff0c;重新打开word即可使用。 字体样式如下&#xff08;可自行修改&#…...

生成式 AI 与向量搜索如何扩大零售运营:巨大潜力尚待挖掘

在竞争日益激烈的零售领域&#xff0c;行业领导者始终在探索革新客户体验和优化运营的新途径&#xff0c;而生成式 AI 和向量搜索在这方面将大有可为。从个性化营销到高效库存管理&#xff0c;二者在零售领域的诸多应用场景中都展现出变革性潜力&#xff0c;已成为保持行业领先…...

WonderWorld:斯坦福与 MIT 联手打造实时交互生成图像,单图秒变 3D 虚拟世界

❤️ 如果你也关注大模型与 AI 的发展现状&#xff0c;且对大模型应用开发非常感兴趣&#xff0c;我会快速跟你分享最新的感兴趣的 AI 应用和热点信息&#xff0c;也会不定期分享自己的想法和开源实例&#xff0c;欢迎关注我哦&#xff01; &#x1f966; 微信公众号&#xff…...

2024年【制冷与空调设备安装修理】考试内容及制冷与空调设备安装修理最新解析

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 制冷与空调设备安装修理考试内容是安全生产模拟考试一点通总题库中生成的一套制冷与空调设备安装修理最新解析&#xff0c;安全生产模拟考试一点通上制冷与空调设备安装修理作业手机同步练习。2024年【制冷与空调设备…...

PHP const 和 define主要区别

在PHP中&#xff0c;const 和 define 都用于定义常量&#xff0c;但它们有一些关键的区别。以下是它们之间的主要不同点&#xff1a; 定义方式&#xff1a; const&#xff1a;在定义常量时&#xff0c;不需要使用函数形式&#xff0c;而是直接赋值。 const MY_CONSTANT som…...

期中前学习复习总结

期中前终于把每一科的本质给搞明白了。这篇文章也将各学科剖分为两部分。 目录 本质 学法 从问题或条件出发思考问题 从条件出发思考问题 从结论/问题出发思考问题 整理知识与反向押题法 反向押题法 本质 作者是一个理科脑&#xff0c;什么都觉得只要我脑子够新东西我…...

K8S如何基于Istio重新实现微服务

K8S如何基于Istio重新实现微服务 认识 Istio前言Istio 的理念Istio 的架构数据平面控制平面服务与 Istio 的关系 Istio 实践环境准备安装 Helm安装Istio 使用 Istio 代理运行应用情感分析应用的架构使用 Istio 代理运行应用Sidecar 注入Ingress 网关网关资源VirtualService 资源…...

MediaPipe 与 OpenCV 的结合——给心爱的人画一个爱心吧~

目录 概要 实现思路 整体代码实现 效果展示 总结 概要 实时手部检测与绘图应用&#xff0c;通过摄像头捕捉视频流&#xff0c;使用 MediaPipe 识别手部关键点&#xff0c;判断食指是否伸展且其他手指是否弯曲&#xff0c;在满足条件时在画布上绘制圆点&#xff0c;并实时显…...

心觉:成大事,不怕慢,就怕站

Hi&#xff0c;我是心觉&#xff0c;带你用潜意识化解各种焦虑、内耗&#xff0c;建立无敌自信&#xff1b;教你财富精准显化的实操方法&#xff1b;关注我,伴你一路成长&#xff01; 每日一省写作213/1000天 今天咱们聊聊一个不太花哨&#xff0c;但超重要的话题&#xff1a…...

练习LabVIEW第二十三题

学习目标&#xff1a; 刚学了LabVIEW&#xff0c;在网上找了些题&#xff0c;练习一下LabVIEW&#xff0c;有不对不好不足的地方欢迎指正&#xff01; 第二十三题&#xff1a; 建立一个枚举控件&#xff0c;其内容为张三、李四、王五共三位先生&#xff0c;要求当枚举控件显…...

集成对接案例分享:金蝶云与聚水潭数据对接

金蝶云星空与聚水潭的采购入库单数据集成案例分享 在企业信息化管理中&#xff0c;数据的高效流转和准确对接是提升业务效率的关键。本文将深入探讨如何通过轻易云数据集成平台&#xff0c;实现金蝶云星空中的采购入库单数据无缝对接到聚水潭系统中的其他入库单。 本次集成方…...

高级主题-灾难恢复与业务连续性

第一节&#xff1a;灾难恢复与业务连续性 灾难恢复与业务连续性概述 灾难恢复&#xff08;Disaster Recovery, DR&#xff09;和业务连续性&#xff08;Business Continuity, BC&#xff09;是确保企业能够在遭遇灾难或意外中断后迅速恢复正常运营的关键措施。以下是一些基本…...

R语言实现随机森林分析:从入门到精通

随机森林&#xff08;Random Forest&#xff09;是一种流行的机器学习算法&#xff0c;它通过集成多个决策树来提高预测的准确性和鲁棒性。在R语言中&#xff0c;我们可以使用randomForest包来实现随机森林分析。本文将详细介绍如何使用R语言进行随机森林分析&#xff0c;包括数…...

【vs2022】windows可用的依赖预编译库

ffmpeg 、x264 、x265 等。obs是基于qt6+vs2022+64bit obs的官网传统构建已经不用了obs的s2022构建OBS Deps Build 2024-09-12FFmpeg4.4 库,x64 可用。...

基础设施即代码(IaC):自动化基础设施管理的未来

随着云计算和大规模分布式系统的迅速发展,手动管理和配置基础设施的传统方式已逐渐跟不上快速迭代的步伐。于是,基础设施即代码(Infrastructure as Code,IaC)作为一种创新实践,成为现代运维管理的基础。IaC不仅提高了基础设施的配置速度,还提升了系统的一致性和可重复性…...

C# 创建型设计模式----原型模式

1、值类型与引用类型、深拷贝与浅拷贝。 在了解原型模式前得先对这四个知识点有些了解。我先简单介绍一下这四个知识点。 1.1 值类型与引用类型(C#仅有这两种数据类型) 值类型: 常见的值类型&#xff1a;int、long、short、byte、float、double、bool、char、Struct&#xf…...

Python数据分析NumPy和pandas(十五、pandas 数据加载、存储和文件格式)

大多数时候&#xff0c;我们要处理分析的数据是存储在不同格式的文件中的&#xff0c;有txt、csv、excel、json、xml以及二进制等磁盘文件格式&#xff0c;还有时候是从数据库以及从Web API中交互获取要处理的数据。现在开始学习如何用pandas从以上内容中输入和输出数据。 读取…...

正则表达式以及密码匹配案例手机号码脱敏案例

目录 正则表达式 什么是正则表达式 语法 定义变量 test方法 exec方法 replace方法 match方法 修饰符 元字符 边界符 单词边界 字符串边界 边界符&#xff1a;^ 边界符&#xff1a;$ 量词 * ? {n} {n,} {n,m} 字符类 []匹配字符集合 .匹配除换行符之外的…...