vue3-事件处理

事件监听

  • DOM 事件监听指令 v-on 简写@

v-on:click="handler"
或者
@click="handler"
  • 事件处理器 (handler) 的值可以是:

  1. 内联事件处理器:比如 click

  2. 方法事件处理器:一个指向组件上定义的方法的属性名或是路径。

  3. 在内联处理器中调用方法(自定义参数)

  4. 在内联事件处理器中访问事件参数 (自定义参数和原生 event 事件)

  • 方式 1 你可以向该处理器方法传入一个特殊的 $event 变量

  • 方式 2 使用内联箭头函数

<script lang="ts" setup>
import { ref } from "vue"const count = ref(0)// 自定义方法
const name = ref('Vue.js')
function greet(event: any) {alert(`Hello ${name.value}!`)// `event` 是 DOM 原生事件if (event) {alert(event.target.tagName)}
}function say(message: string) {alert(message)
}function warn(message: string, event: any) {// 这里可以访问原生事件if (event) {event.preventDefault()}alert(message)
}function onClick() {alert(123);
}</script><template><div class="container"><button @click="count++">(@click事件) 点击 +1</button><p>计数器: {{ count }}</p><!-- `greet` 是上面定义过的方法名 --><button @click="greet">调用方法 @click="greet" 默认是event参数</button><br /><!-- 自定义方法传参 --><button @click="say('你好')">自定义方法传参say('你好')替换掉原生event事件参数</button><br /><!-- 自定义参数 并 传入原生事件 形式1 --><!-- 使用特殊的 $event 变量 --><button @click="warn('表单还未提交 形式1拦截.', $event)">Submit提交 - 形式1 $event 变量</button><br /><!-- 自定义参数 并 传入原生事件 形式2 --><!-- 使用内联箭头函数 --><button @click="(event) => warn('表单还未提交 形式2拦截.', event)">Submit提交- 形式2 箭头函数</button><br /></div>
</template><style lang="scss" scoped>
.container {}
</style>

示例

事件修饰符

在处理事件时调用 event.preventDefault() 或 event.stopPropagation() 是很常见的。

v-on 提供了事件修饰符。修饰符是用 . 表示的指令后缀,包含以下这些:

修饰符简介
stop单击事件将停止传递
prevent提交事件将不再重新加载页面
self元素本身时才会触发事件处理器
capture事件冒泡时,优先触发该修饰符事件,多个嵌套则由外而内触发
once点击事件最多被触发一次
passive一般用于触摸事件的监听器,可以用来改善移动端设备的滚屏性能
<!-- 单击事件将停止传递 -->
<a @click.stop="doThis"></a><!-- 提交事件将不再重新加载页面 -->
<form @submit.prevent="onSubmit"></form><!-- 修饰语可以使用链式书写 -->
<a @click.stop.prevent="doThat"></a><!-- 也可以只有修饰符 -->
<form @submit.prevent></form><!-- 仅当 event.target 是元素本身时才会触发事件处理器 -->
<!-- 例如:事件处理器不来自子元素 -->
<div @click.self="doThat">...</div><!-- 添加事件监听器时,使用 `capture` 捕获模式 -->
<!-- 例如:指向内部元素的事件,在被内部元素处理前,先被外部处理 -->
<div @click.capture="doThis">...</div><!-- 点击事件最多被触发一次 -->
<a @click.once="doThis"></a><!-- 滚动事件的默认行为 (scrolling) 将立即发生而非等待 `onScroll` 完成 -->
<!-- 以防其中包含 `event.preventDefault()` -->
<div @scroll.passive="onScroll">...</div>

使用修饰符时需要注意调用顺序,因为相关代码是以相同的顺序生成的。

  1. @click.prevent.self

会阻止元素及其子元素的所有点击事件的默认行为

  1. @click.self.prevent

则只会阻止对元素本身的点击事件的默认行为

按键修饰符

在监听键盘事件时,我们经常需要检查特定的按键。

<!-- 仅在 `key` 为 `Enter` 时调用 `submit` -->
<input @keyup.enter="submit" />

你可以直接使用 KeyboardEvent.key 暴露的按键名称作为修饰符,但需要转为 kebab-case 形式。

<input @keyup.page-down="onPageDown" />

在上面的例子中,仅会在 $event.key 为 'PageDown' 时调用事件处理。

常用按键别名

  • enter

  • tab

  • delete (捕获“Delete”和“Backspace”两个按键)

  • esc

  • space

  • up

  • down

  • left

  • right

系统按键修饰符

你可以使用以下系统按键修饰符来触发鼠标或键盘事件监听器,只有当按键被按下时才会触发

  • .ctrl

  • .alt

  • .shift

  • .meta

<!-- Alt + Enter -->
<input @keyup.alt.enter="clear" /><!-- Ctrl + 点击 -->
<div @click.ctrl="doSomething">Do something</div>

请注意,系统按键修饰符和常规按键不同。与 keyup 事件一起使用时,该按键必须在事件发出时处于按下状态。换句话说,keyup.ctrl 只会在你仍然按住 ctrl 但松开了另一个键时被触发。若你单独松开 ctrl 键将不会触发。

.exact 修饰符

.exact 修饰符允许控制触发一个事件所需的确定组合的系统按键修饰符。

<!-- 只要按下 Ctrl 时,不管按不按其他按键都会触发 -->
<button @click.ctrl="onClick">A</button><!-- 仅当按下 Ctrl 且未按任何其他键时才会触发 -->
<button @click.ctrl.exact="onCtrlClick">A</button><!-- 仅当没有按下任何系统按键时触发 -->
<button @click.exact="onClick">A</button>

鼠标按键修饰符

  • .left

  • .right

  • .middle 这些修饰符将处理程序限定为由特定鼠标按键触发的事件。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot 2.x 正式停更了。Java 8 由 Solon 接收!

最近有好多个新闻说&#xff1a;SpringBoot 2.x 正式停更了&#xff0c;Java 8 怎么办&#xff1f;当然用 Solon 喽&#xff01; Solon&#xff0c;同时支持 jdk8, jdk11, jdk17, jdk21。也支持 graalvm native image。既支持 java8&#xff0c;也支持 java21 的&#xff1a; …

综述:自动驾驶中的 4D 毫米波雷达

论文链接&#xff1a;《4D Millimeter-Wave Radar in Autonomous Driving: A Survey》 摘要 4D 毫米波 (mmWave) 雷达能够测量目标的距离、方位角、仰角和速度&#xff0c;引起了自动驾驶领域的极大兴趣。这归因于其在极端环境下的稳健性以及出色的速度和高度测量能力。 然而…

Android中的SPI实现

Android中的SPI实现 SPI是JVM世界中的标准API&#xff0c;但在Android应用程序中并不常用。然而&#xff0c;它可以非常有用地实现插件架构。让我们探讨一下如何在Android中利用SPI。 问题 在Android中&#xff0c;不同的提供者为推送功能提供服务&#xff0c;而在大型项目中…

5文件操作

包含头文件<fstream> 操作文件三大类&#xff1a; ofstream : 写文件ifstream &#xff1a;读文件fstream : 读写文件 5.1文本文件 -文件以ascii的形式存储在计算机中 5.1.1写文件 步骤&#xff1a; 包含头文件 #include "fstream"创建流对象 ofs…

Vue 如何把computed里的逻辑提取出来

借用一下百度的ai 项目使用&#xff1a; vue 文件引入 <sidebar-itemv-for"route in routes":key"route.menuCode":item"route":base-path"route.path"click"onColor"/>import { handleroutes } from "./handle…

Base64编码原理解析

文章目录 一、Base64Base64编码的原理如下&#xff1a;以字符串"hello world"为例&#xff0c;它的ASCII码为&#xff08;下面&#x1f447;是ASCII码对照表&#xff09;&#xff1a;将这些ASCII码转换为二进制&#xff08;对照上表&#xff09;&#xff1a;将上述二…

Shiro框架:Shiro用户访问控制鉴权流程-内置过滤器方式源码解析

目录 1.配置访问控制鉴权流程的2种方式 2.Shiro内置过滤器 3.权限控制流程解析 3.1 权限&#xff08;Permissions&#xff09;配置和初始化流程 3.1.1 通过filterChainDefinitionMap配置url权限 3.1.1.1 应用层配置方式 3.1.1.2 配置解析过程 3.1.1.2.1 FilterChainMan…

UE4使用技巧

打开蓝图编辑器时不是打开一个新窗口&#xff0c;而是作为主窗口 适用于全部的打开新窗口的操作 蓝图编译时自动保存 开始游戏后立即捕获鼠标

华为路由设备DHCPV6配置

组网需求 如果大量的企业用户IPv6地址都是手动配置&#xff0c;那么网络管理员工作量大&#xff0c;而且可管理性很差。管理员希望实现公司用户IPv6地址和网络配置参数的自动获取&#xff0c;便于统一管理&#xff0c;实现IPv6的层次布局。 图1 DHCPv6服务器组网图 配置思路 …

Clickhouse: One table to rule them all!

前面几篇笔记我们讨论了存储海量行情数据的个人技术方案。它们之所以被称之为个人方案&#xff0c;并不是因为性能弱&#xff0c;而是指在这些方案中&#xff0c;数据都存储在本地&#xff0c;也只适合单机查询。 数据源很贵 – 在这个冬天&#xff0c;我们已经听说&#xff0…

Peter算法小课堂—并查集

我们先来看太戈编程467题 攀亲戚 题目描述&#xff1a; 最近你发现自己和古代一个皇帝长得很像&#xff1a;都有两个鼻子一个眼睛&#xff0c;你想知道这皇帝是不是你的远方亲戚&#xff0c;你是不是皇亲国戚。目前你能掌握的信息有m条&#xff0c;关于n个人&#xff1a;第i条…

Python二级中的进制转换:看这一篇就够了

在计算机中&#xff0c;不同的进制之间的转换是常见的问题&#xff0c;也是令很多朋友比较头疼的问题&#xff0c;这种题虽然在Python二级中分不多&#xff0c;有时甚至还不会出&#xff0c;但是必须要掌握它们&#xff0c;以备不时之需。 这里详细介绍如何在二进制、八进制、…

Unity之铰链关节和弹簧组件

《今天闪电侠他回来了&#xff0c;这一次他要拿回属于他的一切》 目录 &#x1f4d5;一、铰链关节组件HingeJoint 1. 实例 2. 铰链关节的坐标属性 ​3.铰链关节的马达属性Motor &#x1f4d5;二、弹簧组件 &#x1f4d5;三、杂谈 一、铰链关节组件HingeJoint 1. 实例 说…

Docker从入门到精通

系列文章目录 docker常见用法之镜像构建1 docker 系列文章目录一、镜像的分层结构二、容器的用法三、镜像的构建3.1docker commit 构建新镜像三部曲3.1.1运行容器并且修改容器3.1.2提交容器3.1.2删除docker镜像 3.2Dockerfile构建镜像 系列文章目录一、 Dockerfile写法详解1.1…

MySQL优化之SQL调优策略

首先以一张思维导图从全局上给大家分享以下几种SQL优化策略&#xff0c;再详细讲解 1、避免使用SELECT * 在阿里的编码规范中也强制了数据库查询不能使用SELECT *&#xff0c;因为SELECT *方式走的都是全表扫描&#xff0c;导致的结果就是查询效率非常低下&#xff0c;其原因为…

Redis数据结构学习笔记

图文主要参考小林Coding的图解redis数据结构 redis为什么快 除了它是内存数据库&#xff0c;使得所有的操作都在内存上进⾏之外&#xff0c;还有⼀个重要因素&#xff0c;它实现的数据结构&#xff0c;使 得我们对数据进⾏增删查改操作时&#xff0c;Redis 能⾼效的处理。 数…

1.机器学习-机器学习算法分类概述

机器学习-机器学习算法分类概述 个人简介机器学习算法分类&#xff1a;监督学习、无监督学习、强化学习一监督学习1. 监督学习分类任务举例&#xff1a;1.1 特征1.2 标签 二无监督学习1.关键特点2.应用示例3.常见的无监督学习算法 三强化学习1.定义2.示例场景 四机器学习开发流…

【Python3】【力扣题】389. 找不同

【力扣题】题目描述&#xff1a; 【Python3】代码&#xff1a; 1、解题思路&#xff1a;使用计数器分别统计字符串中的元素和出现次数&#xff0c;两个计数器相减&#xff0c;结果就是新添加的元素。 知识点&#xff1a;collections.Counter(...)&#xff1a;字典子类&#x…

【白皮书下载】GPU计算在汽车中的应用

驾驶舱域控制器 (CDC) 是汽车 GPU 的传统应用领域。在这里&#xff0c;它可以驱动仪表板上的图形&#xff0c;与车辆保持高度响应和直观的用户界面&#xff0c;甚至为乘客提供游戏体验。随着车辆屏幕数量的增加和分辨率的提高&#xff0c;对汽车 GPU 在 CDC 中进行图形处理的需…

Jxls 实现动态导出功能

目录 引言前端页面后端代码excel模板导出效果 引言 在实际做项目的过程中&#xff0c;导出报表时需要根据每个人所关注的点不一样&#xff0c;所需导出的字段也不一样&#xff0c;这时后端就需要根据每个所选的字段去相应的报表&#xff0c;这就是本文要讲的动态导出报表。 前端…