【vue.js】文档解读【day 4】 | 事件处理

在这里插入图片描述

如果阅读有疑问的话,欢迎评论或私信!!

文章目录

  • 事件处理
    • 前言
    • 监听事件
    • 内联事件处理器
    • 方法事件处理器
    • 方法与内联事件判断
    • 在内联处理器中调用方法
    • 在内联事件处理器中访问事件参数
    • 修饰符
      • 事件修饰符
      • 按键修饰符
      • 常规按键别名
      • 系统按键别名
      • 组合按键
      • exact 修饰符
      • 鼠标按键修饰符

事件处理

前言

我们在模板语法板块中简单介绍过v-on指令的使用方法,我们可以通过v-on绑定一个DOM事件,或者使用@绑定,对于其中的值(也就是事件处理器),我们可以是一个方法。在该章节中,我们会知道绑定事件的详细介绍。

监听事件

事件处理器的值可以是:

  1. 内联事件处理器:事件被触发时执行的内联JavaScript语句。也就是不同表达式的代码
  2. 方法事件处理器:一个指向组件上定义的方法的属性名或是路径,也就是找包含不同表达式代码的地方在哪里。

内联事件处理器

内联事件处理器通常用于简单场景,例如:

<template><button @click="this.keyTest.unshift({ id: 10, myName: "新的" });">添加</button>
</template><script>data() {var keyTest = [{id: 0,myName: 1,},{id: 1,myName: 2,},{id: 2,myName: 3,},{id: 3,myName: 4,},{id: 4,myName: 5,},];return {keyTest}
}
</script>

方法事件处理器

由于内联事件处理器在面对复杂逻辑时会显得有些冗余,并且不够灵活。所以加入了方法事件处理器,它可以接受一个方法名,用于处理更复杂的事件处理逻辑。例如:

<template><button @click="greet">Test</button>
</template><script>methods: {greet(event) {// `event` 是 DOM 原生事件if (event) {console.log(event);}},}
</script>

在方法事件处理器中,我们可以使用任意变量名表示一个DOM事件参数,推荐使用event表示,增加可读性。其中eventDOM原生事件,并没有被包装,例如可以使用event.target.tagName来获取当前调用DOM的标签名。

方法与内联事件判断

在对vue模板编译时,编译器会检查v-on指令中的值。如果是一个属性访问路径,那么就当作是一个方法事件处理器处理;如果是JavaScript标识符或是一个调用方法,那么就会当作是一个内联事件处理器处理。

在内联处理器中调用方法

在上面我们讲到对一个函数的调用属于内联处理器,其中的参数也不再是方法事件处理器中所将的DOM原生事件,而是自定义参数:

<template><button @click="say('hello')">Say hello</button><button @click="say('bye')">Say bye</button>
</template><script>methods: {say(message) {alert(message)}}
</script>

在内联事件处理器中访问事件参数

我们目前知道方法事件处理器中的参数是DOM原生事件内联事件处理器自定义参数,那么除了自定义参数,我们还可以向方法中传递$event变量,表示我们使用DOM原生事件参数,例如:

<template><button @click="greet('123')">Test</button>
</template><script>methods: {greet(customName,$event) {console.log(customName); //123 PointerEvent {isTrusted: true,…}},}
</script>

我们还可以先在内联代码中使用箭头函数将当前原生DOM事件作为参数传入到方法中,例如:

<template><button @click="(event)=>{greet('123',event)}">Test</button>
</template><script>methods: {greet(customName,$event) {console.log(customName); //123 PointerEvent {isTrusted: true,…}},}
</script>

修饰符

Vue为我们提供了许多便捷修饰符,使我们的代码更简洁。提供修饰符的目的是使我们的代码能更注重其中的逻辑性,而不会被一些细节问题打乱。修饰符使用.后缀使用,和v-on指令一起使用。

事件修饰符

  • .stop 阻止元素向上冒泡
  • .prevent 清除DOM默认行为
  • .self 等同于先进行event.target === this判断,如果是自身才触发,是为了防止冒泡引起问题。
  • .capture 在多层DOM嵌套中,触发内部元素,会引起外部元素的相应事件,而capture可以使当前DOM优先处理。
  • .once 事件最多被触发一次
  • .passive 与prevent相对,可以说是防止清除DOM默认行为

按键修饰符

Vue同时为我们提供了按键修饰符,可以使用KeyboardEvent键盘事件加.后缀使用。例如:

<template><input type="text" @keyup.a="console.log('a')">
</template>

在输入时,如果发生a键松开时,触发监听事件。

在修饰符命名中,我们使用的是-分隔符,而不是驼峰命名。例如:

<template><input type="text" @keyup.page-down="console.log('pageDown')">
</template>

常规按键别名

  • .enter 回车键
  • .tab 换行键
  • .delete (捕获“Delete”和“Backspace”两个按键)
  • .esc 退出键
  • .space 空格
  • .up ↑键
  • .down ↓键
  • .left ←键
  • .right →键

系统按键别名

  • .ctrl
  • .alt
  • .shift
  • .meta 在 Mac 键盘上,meta 是 Command 键 (⌘)。在 Windows 键盘上,meta 键是 Windows 键 (⊞)。

组合按键

当常规+常规组合监听时,效果是两个键每一个都可以触发一次监听事件。例如:

<template><input type="text" @keyup.1.a="console.log('a || 1')">
</template>

当常规+系统组合监听时,效果是两个键同时按下时触发一次监听事件。

<template><input type="text" @keyup.ctrl.a="console.log('ctrl && a')">
</template>

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

exact 修饰符

exact翻译为准确的,是为了我们可以准确的使用键盘事件。该修饰符只能用于常规+系统组合。例如:

<!-- 当按下 Ctrl 点击按钮时,即使同时按下 Alt 或 Shift 也会触发 -->
<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/526615.html

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

相关文章

Nomic Embed:能够复现的SOTA开源嵌入模型

Nomic-embed-text是2月份刚发布的&#xff0c;并且是一个完全开源的英文文本嵌入模型&#xff0c;上下文长度为8192。它在处理短文和长文本任务方面都超越了现有的模型&#xff0c;如OpenAI的Ada-002和text-embedding-3-small。该模型有137M个参数在现在可以算是非常小的模型了…

[LeetCode][LCR151]彩灯装饰记录 III——队列

题目 LCR 151. 彩灯装饰记录 III 一棵圣诞树记作根节点为 root 的二叉树&#xff0c;节点值为该位置装饰彩灯的颜色编号。请按照如下规则记录彩灯装饰结果&#xff1a; 第一层按照从左到右的顺序记录除第一层外每一层的记录顺序均与上一层相反。即第一层为从左到右&#xff0c…

鸿蒙报错:Hhvigor Update the SDKs by going to Tools > SDK Manager....

鸿蒙报错&#xff1a;Hhvigor Update the SDKs by going to Tools > SDK Manager… 打开setting里面的sdk&#xff0c;将API9工程下的全部勾上&#xff0c;应用下载 刚打开 js 和 Native 是没勾上的

LeetCode Python - 43.字符串相乘

目录 题目答案运行结果 题目 给定两个以字符串形式表示的非负整数 num1 和 num2&#xff0c;返回 num1 和 num2 的乘积&#xff0c;它们的乘积也表示为字符串形式。 注意&#xff1a;不能使用任何内置的 BigInteger 库或直接将输入转换为整数。 示例 1: 输入: num1 “2”, …

Pytorch学习 day08(最大池化层、非线性激活层、正则化层、循环层、Transformer层、线性层、Dropout层)

最大池化层 最大池化&#xff0c;也叫上采样&#xff0c;是池化核在输入图像上不断移动&#xff0c;并取对应区域中的最大值&#xff0c;目的是&#xff1a;在保留输入特征的同时&#xff0c;减小输入数据量&#xff0c;加快训练。参数设置如下&#xff1a; kernel_size&#…

AI智能应用百科立即落地实操课

该课程旨在教授学员如何将AI智能应用于实际场景。通过深入的案例研究和实操练习&#xff0c;学员将学会应用机器学习、自然语言处理等技术&#xff0c;快速解决现实问题。课程强调实际操作&#xff0c;帮助学员快速运用AI技术解决工作中的挑战。 课程大小&#xff1a;3.3G 课…

【Java探索之旅】数据类型与变量,字面常量,整型变量

&#x1f3a5; 屿小夏 &#xff1a; 个人主页 &#x1f525;个人专栏 &#xff1a; Java入门到精通 &#x1f304; 莫道桑榆晚&#xff0c;为霞尚满天&#xff01; 文章目录 &#x1f4d1;前言一、字面常量二、数据类型三、变量3.1 变量概念3.2 语法格式 四、整型变量4.1 整型变…

reids设计与实现(一)——数据对象

文章目录 1. 前言2. redis 动态字符串2.1. 字符串的数据结构&#xff1a;2.2. 剖析&#xff0c;length&#xff1b;2.3. 剖析&#xff0c;free&#xff1b;2.3. 使用c字符串函数&#xff1b; 3. redis 链表4. 字典5. 跳跃表 1. 前言 reids作为最常用的缓存数据库&#xff0c;深…

【Pytorch】进阶学习:深入解析 sklearn.metrics 中的 classification_report 函数---分类性能评估的利器

【Pytorch】进阶学习&#xff1a;深入解析 sklearn.metrics 中的 classification_report 函数—分类性能评估的利器 &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化、Python基础【高质量合…

界面开发框架DevExpress XAF v24.1新版预告 - 跨平台应用UI(一)

DevExpress XAF是一款强大的现代应用程序框架&#xff0c;允许同时开发ASP.NET和WinForms。XAF采用模块化设计&#xff0c;开发人员可以选择内建模块&#xff0c;也可以自行创建&#xff0c;从而以更快的速度和比开发人员当前更强有力的方式创建应用程序。 本文中的内容概述了…

js前天、昨天、今天、明天、后天,大后天代码

js 前天、昨天、今天、明天、后天&#xff0c;大后天代码 function GetDateStr(AddDayCount) {var dd new Date();dd.setDate(dd.getDate() AddDayCount); //获取 AddDayCount 天后的日期 var y dd.getFullYear();var m dd.getMonth() 1; //获取当前月份的日期 var d dd…

课时59:流程控制_if条件控制_语法解读

2.2.1 语法解读 学习目标 这一节&#xff0c;我们从 基础知识、简单实践、小结 三个方面来学习。 基础知识 简介 条件结构能够根据某个特定的条件&#xff0c;结合内置的测试表达式功能&#xff0c;结合测试的结果状态值对于条件进行判断&#xff0c;然后选择执行合适的任务…