【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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

java-ssm-jsp-基于ssm的宝文理学生社团管理系统

java-ssm-jsp-基于ssm的宝文理学生社团管理系统 获取源码——》公主号&#xff1a;计算机专业毕设大全

【数据分享】2013-2022年全国范围逐月CO栅格数据(免费获取)

空气质量数据是在我们日常研究中经常使用的数据&#xff01;之前我们给大家分享了2000-2022年全国范围逐月的PM2.5栅格数据和2013-2022年全国范围逐月SO2栅格数据&#xff08;可查看之前的文章获悉详情&#xff09;。 本次我们给大家带来的是2013-2022年全国范围的逐月的CO栅格…

STL容器之哈希的补充——其他哈希问题

1.其他哈希问题 ​ 减少了空间的消耗&#xff1b; 1.1位图 ​ 位图判断在不在的时间复杂度是O(1)&#xff0c;速度特别快; ​ 使用哈希函数直接定址法&#xff0c;1对1映射&#xff1b; ​ 对于海量的数据判断在不在的问题&#xff0c;使用之前的一些结构已经无法满足&…

鸿蒙开发-UI-动画-页面内动画

鸿蒙开发-UI-组件2 鸿蒙开发-UI-组件3 鸿蒙开发-UI-气泡/菜单 鸿蒙开发-UI-页面路由 鸿蒙开发-UI-组件导航-Navigation 鸿蒙开发-UI-组件导航-Tabs 鸿蒙开发-UI-图形-图片 鸿蒙开发-UI-图形-绘制几何图形 鸿蒙开发-UI-图形-绘制自定义图形 文章目录 前言 一、概述 二、页面内…

基于springboot+vue的美食烹饪互动平台

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战&#xff0c;欢迎高校老师\讲师\同行交流合作 ​主要内容&#xff1a;毕业设计(Javaweb项目|小程序|Pyt…

Ainx的消息封装

&#x1f4d5;作者简介&#xff1a; 过去日记&#xff0c;致力于Java、GoLang,Rust等多种编程语言&#xff0c;热爱技术&#xff0c;喜欢游戏的博主。 &#x1f4d7;本文收录于Ainx系列&#xff0c;大家有兴趣的可以看一看 &#x1f4d8;相关专栏Rust初阶教程、go语言基础系列…

【深度学习笔记】6_9 深度循环神经网络deep-rnn

注&#xff1a;本文为《动手学深度学习》开源内容&#xff0c;部分标注了个人理解&#xff0c;仅为个人学习记录&#xff0c;无抄袭搬运意图 6.9 深度循环神经网络 本章到目前为止介绍的循环神经网络只有一个单向的隐藏层&#xff0c;在深度学习应用里&#xff0c;我们通常会用…

宿主机连接不上vmware中的虚拟机排查思路

1、简介 在前文中&#xff0c;我们遇到了电脑连接网络后无法浏览网页的情况&#xff0c;其中有一种方式就是将网络适配器卸载&#xff0c;然后重启机器。今天在使用vmware中的虚拟机时&#xff0c;发现和宿主机网段不一致&#xff0c;导致宿主机访问不了虚拟机&#xff0c;主要…

Vue快速开发一个主页

前言 这里讲述我们如何快速利用Vue脚手架快速搭建一个主页。 页面布局 el-container / el-header / el-aside / el-main&#xff1a;https://element.eleme.cn/#/zh-CN/component/container <el-container><el-header style"background-color: #4c535a"…

【算法沉淀】最长回文子串

&#x1f389;&#x1f389;欢迎光临&#x1f389;&#x1f389; &#x1f3c5;我是苏泽&#xff0c;一位对技术充满热情的探索者和分享者。&#x1f680;&#x1f680; &#x1f31f;特别推荐给大家我的最新专栏《数据结构与算法&#xff1a;初学者入门指南》&#x1f4d8;&am…

探索代理服务器:保护您的网络安全与隐私

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a;Linux ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 前言 正文 隐藏真实IP地址&#xff1a; 访问控制&#xff1a; 加速访问速度&#xff1a; 过滤内容&#xff1a; 突破访问限制&#xff1…

【Linux系统】线程

目录 一.线程的概念 (1)地址空间是进程的资源窗口 (2)轻量级进程 二.线程的理解 1.Linux中线程的实现方案 2. 线程VS进程 3.线程比进程更加轻量化 4.线程的优点 5.线程的缺点 6.线程共享的资源 7.线程私有的资源 三.地址空间虚拟到物理的转化 1.页框 2.重新理解文…

Vessel - Linux hackthebox

#hard #runc #RE #Nodejs-SQLI Enumeration .git leak 使用 dumpall 下载 .git 打开 routes/index.js 可以看到网站使用 nodejs mysql 编写&#xff0c;且只有登录功能 router.post(/api/login, function(req, res) {let username req.body.username;let password req…

深入理解神经网络

图片怎么被识别的过程 (每层神经网络是数组,会对进来的数据进行加权求和[(weight*数据 然后累加) bias])(激活函数是为了训练weight和bias偏移值,在每个神经网络)(分类器会统计概率分类) 2. 引用链接 https://mp.weixin.qq.com/s?__bizMzIyNjMxOTY0NA&mid2247500124&…

springboot256基于springboot+vue的游戏交易系统

游戏交易系统设计与实现 摘 要 在如今社会上&#xff0c;关于信息上面的处理&#xff0c;没有任何一个企业或者个人会忽视&#xff0c;如何让信息急速传递&#xff0c;并且归档储存查询&#xff0c;采用之前的纸张记录模式已经不符合当前使用要求了。所以&#xff0c;对游戏交…

就业班 2401--3.8 Linux Day14--阿帕奇+LNMP(编译安装)

一、WEB服务器 ^世上最重要的事&#xff0c;不在于我们在何处&#xff0c;而在于我们朝着什么方向走。^ 1、WEB服务简介 # 目前最主流的三个Web服务器是Apache、Nginx、 IIS。 - WEB服务器一般指网站服务器&#xff0c;可以向浏览器等Web客户端提供网站的访问&#xff0c;让全…

C语言字符串、字符数组与字符串常量——各种奇奇怪怪的偏难怪

文章目录 一、字符串二、字符数组三、字符串常量&#xff08;字符指针&#xff09;易错点总结 一、字符串 在C语言中&#xff0c;没有专门的字符串变量&#xff0c;没有string类型。 字符串定义有两种方法&#xff1a;一是利用字符数组&#xff0c;二是利用字符指针 。 字符串…

计算机考研|一个很上头的408复习法(可实操)

因为408越复习&#xff0c;越轻松&#xff0c;这就是408上头的原因 408一开始复习肯定是有难度的&#xff0c;这也是408非常劝退的原因之一&#xff0c;但是如果你是科班出身&#xff0c;学完408第一遍之后&#xff0c;你就会轻松很多&#xff0c;因为408的内容虽然多&#xf…

详解数据库、Hive以及Hadoop之间的关系

1.数据库&#xff1a; 数据库是一个用于存储和管理数据的系统。数据库管理系统&#xff08;DBMS&#xff09;是用于管理数据库的软件。数据库使用表和字段的结构来组织和存储数据。关系型数据库是最常见的数据库类型&#xff0c;使用SQL&#xff08;Structured Query Language…

【决策树】预测用户用电量

决策树预测用户用电量 文章目录 决策树预测用户用电量  &#x1f449;引言&#x1f48e;一、 数据预处理数据预处理初步数据分析 二、 机器学习算法决策树回归预测用电量决策树模型介绍&#xff1a;回归预测 三、 可视化结果四、 数据分析与结论代码如下 &#x1f449;引言&a…