02.vue3事件处理

news/2024/11/29 13:38:47/

文章目录

    • 1.事件的基本使用
    • 2.事件对象
    • 3.事件修饰符
    • 4.按键修饰符
        • 1.Vue中常用的按键别名:
        • 2.Vue未提供别名的按键,可以使用按键原始的key值去绑定,但注意要转为kebab-case(短横线命名)
        • 3.系统修饰键(用法特殊):tab、ctrl、alt、shift、meta
        • 4.也可以使用keyCode去指定具体的按键(vue2有vue3已经舍去)
        • 5.Vue.config.keyCodes.自定义键名 = 键码,可以去定制按键别名
        • 6. `exact` 修饰符:

1.事件的基本使用

使用v-on:xxx 或 @xxx 绑定事件,其中xxx是事件名;

<template><p>count的值为:{{count}}</p><button v-on:click="addCount">count++</button><button @click="count++">行内式的写法,点击按钮count++</button>
</tempalte><script setup>
import {ref,reactive} from "vue"const count=ref(0);
const addCount=()=>{count.value++;
}
</script>

2.事件对象

有时也需要在内联语句处理器中访问原始的 DOM 事件。可以用特殊变量 $event 把它传入方法

<template><div class="box" @contextmenu="sum($event,100,200)"><p>需求:右击当前盒子时计算传入数据的和,并阻止右击时弹出弹框的默认事件</p></div><!-- 事件处理程序中可以有多个方法,这些方法由逗号运算符分隔 --><p><button @click="one($event),two($event)">传入多个方法</button> </p>
</tempalte><script setup>
import {ref,reactive} from "vue"const sum=(e,a,b)=>{e.preventDefault();console.log(111)console.log(a+b);
}
const one=(e)=>{console.log(e);console.log("获取当前点击的位置:",e.clientX,e.clientY);
}
const two=(e)=>{console.log("我是第二个方法")
}
</script>

3.事件修饰符

在事件处理程序中调用 event.preventDefault()event.stopPropagation() 是非常常见的需求。尽管我们可以在方法中轻松实现这点,但更好的方式是:方法只有纯粹的数据逻辑,而不是去处理 DOM 事件细节。

为了解决这个问题,Vue.js 为 v-on 提供了事件修饰符。之前提过,修饰符是由点开头的指令后缀来表示的。

Vue中的事件修饰符

 1.prevent:阻止默认事件(常用);2.stop:阻止事件冒泡(常用);3.once:事件只触发一次(常用);4.capture:使用事件的捕获模式;5.self:只有event.target是当前操作的元素时才触发事件;6.passive:事件的默认行为立即执行,无需等待事件回调执行完毕;
<template><div><p>1.阻止默认事件</p><a href="http://www.baiduc.com" @click.prevent="skip">百度一下,你就知道</a>
</div><div class="demo1" @click="showFather"><p>2.阻止冒泡</p><div class="demo2" @click.stop="showSon"></div></div><p> 3.once事件只触发一次 <button @click="once">点击</button> </p><div class="demo1" @click.capture="showFather"><p>4.capture使用事件的捕获模式</p><div class="demo2" @click="showSon"></div></div><div class="demo1" @click.self="showFather"><p>4.self只有event.target是当前操作的元素时才触发事件</p><div class="demo2" @click="showSon"></div></div><div><p>5.passive:事件的默认行为立即执行,无需等待事件回调执行完毕;</p><!-- 事件的默认行为立即执行,无需等待事件回调执行完毕; --><ul @scroll.passive="demo" class="oul"><li>这是第1个li</li><li>这是第2个li</li><li>这是第3个li</li><li>这是第4个li</li><li>这是第5个li</li></ul></div>
</tempalte><script setup>
import {ref,reactive} from "vue"const skip=()=>{
console.log("阻止跳转!");
}
const showFather=()=>{console.log("showFather事件");
}
const showSon=()=>{console.log("showSon事件");
}
const once=function(){console.log("只触发一次的事件");
}
// @wheel滚轮滚动事件 @scroll滚动条滚动事件
const demo=function(){for(let i=0;i<100000;i++){console.log("这是第"+i+"个");}console.log("111");
}
</script>

4.按键修饰符

在监听键盘事件时,我们经常需要检查特定的按键。Vue 允许为 v-on 或者 @ 在监听键盘事件时添加按键修饰符:

1.Vue中常用的按键别名:

 回车 => enter删除 => delete  (捕获“删除”和“退格”键)退出 => esc空格 => space换行 => tab (特殊,必须配合keydown去使用)上 => up下 => down左 => left右 => right

2.Vue未提供别名的按键,可以使用按键原始的key值去绑定,但注意要转为kebab-case(短横线命名)

3.系统修饰键(用法特殊):tab、ctrl、alt、shift、meta

实现仅在按下相应按键时才触发鼠标或键盘事件的监听器。

 (1).配合keyup使用:按下修饰键的同时,再按下其他键,随后释放其他键,事件才被触发。(2).配合keydown使用:正常触发事件。

注意:在 Mac 系统键盘上,meta 对应 command 键 (⌘)。在 Windows 系统键盘 meta 对应 Windows 徽标键 (⊞)。在 Sun 操作系统键盘上,meta 对应实心宝石键 (◆)。在其他特定键盘上,尤其在 MIT 和 Lisp 机器的键盘、以及其后继产品,比如 Knight 键盘、space-cadet 键盘,meta 被标记为“META”。在 Symbolics 键盘上,meta 被标记为“META”或者“Meta”。

4.也可以使用keyCode去指定具体的按键(vue2有vue3已经舍去)

5.Vue.config.keyCodes.自定义键名 = 键码,可以去定制按键别名

6. exact 修饰符:

.exact 修饰符允许你控制由精确的系统修饰符组合触发的事件。

<tempalte>
<p><input type="text" @keydown.huiche="search" v-model="searchVal"  /> 
</p><p><!-- 同时按下ctrl+c 起作用--><input type="text" placeholder="按下回车提示输入" @keyup.ctrl.c="showInfo($event)"> 
</p><!-- 有且只有 Ctrl 被按下的时候才触发 -->
<!-- 即使 Alt 或 Shift 被一同按下时也会触发 -->
<button @click.ctrl="onClick">A</button><!-- 有且只有 Ctrl 被按下的时候才触发 -->
<button @click.ctrl.exact="onClick">A</button><!-- 没有任何系统修饰符被按下的时候才触发 -->
<button @click.exact="onClick">A</button></template><script setup>
const searchVal=ref("");
//按下enter键,搜索
const search=function(){window.open(`https://www.baidu.com/s?wd=${searchVal.value}`,"_blank");
}
const showInfo=function(e){console.log(e.keyCode);
}
const onClick=function(){console.log("只按下ctrl")
}</script>

http://www.ppmy.cn/news/41691.html

相关文章

【数据结构第八章】- 排序(万字详解排序算法并用 C 语言实现)

目录 一、基本概念和排序方法概述 1.1 - 排序的基本概念 1.2 - 内部排序的分类 二、插入排序 2.1 - 直接插入排序 2.2 - 希尔排序 三、交换排序 3.1 - 冒泡排序 3.2 - 快速排序 3.2.1 - 递归算法 3.2.2 - 优化 3.2.3 - 非递归算法 四、选择排序 4.1 - 简单选择排…

【创作赢红包】python学习——【第七弹】

前言 上一篇文章 python学习——【第六弹】中介绍了 python中的字典操作&#xff0c;这篇文章接着学习python中的可变序列 集合 集合 1&#xff1a; 集合是python语言提供的内置数据结构&#xff0c;具有无序性&#xff08;集合中的元素无法通过索引下标访问&#xff0c;并且…

详解AUTOSAR:Green Hills Software(GHS)集成DaVinci Configurator生成的代码(RH850)(环境配置篇—1)

目录 1、工程搭建 2、配置工程IDE 3、配置工程文件 4、问题总结 1、工程搭建 在下图所示的Sample文件夹下选择对应芯片型号的空工程,添加所需模块的相关代码(MCAL包内)和使用命令行工具生成的模块.c、.h代码文件。

交接机的基本原理

第七章&#xff1a;交接机的基本原理 在网络中传输数据时需要遵循一些标准&#xff0c;以太网协议定义了数据帧在以太网上的传输标准&#xff0c;了解以太网协议是充分理解数据链路层通信的基础。以太网交换机是实现数据链路层通信的主要设备&#xff0c;了解以太网交换机的工作…

一文搞懂SQL注入攻击

SQL注入攻击1. 前言2. SQL注入简介3. SQL注入步骤4. 防范SQL注入1. 前言 随着互联网的发展和普及&#xff0c;网络安全问题越来越突出&#xff0c;网络在为用户提供越来越多服务的同时&#xff0c;也要面对各类越来越复杂的恶意攻击。SQL注入&#xff08;SQL Injection&#x…

伪随机码和密码找回漏洞

伪随机码漏洞 伪随机码结构可以预先确定&#xff0c;重复产生和复制&#xff0c;具有某种随机序列的随机特性的序列号。Web开发中伪随机码主要用于确定范围&#xff0c;php中rand()函数可以产生随机数例如&#xff1a;rand(000000,999999)&#xff0c;一般是手机验证码。 可通…

《花雕学AI》19:比较ChatGPT与新Bing在文章润色方面的应用优势与测试案例

引言&#xff1a; 文章润色是指对已经写好的文章进行修改、优化或完善的过程&#xff0c;以提高文章的质量和效果。文章润色涉及到多方面的内容&#xff0c;如语言表达、逻辑结构、文献引用、格式规范等。文章润色对于提升写作水平、提高论文发表率、增加学术影响力等都有重要意…

Set接口,

接本介绍 无序&#xff08;添加和取出的顺序不一致&#xff09;&#xff0c;没有索引不允许重负元素&#xff0c;所以最多包含一个nullSet接口的常用方法 和List接口一样&#xff0c;Set接口也是Collection的子接口&#xff0c;因此&#xff0c;常用方法和Collection一样Set接口…