Vue核心 事件处理

news2024/11/16 22:38:24

1.8. 事件处理

1.8.1.事件的基本使用:

  1. 使用v-on:xxx或**@xxx**绑定事件,其中 xxx 是事件名
  2. 事件的回调需要配置在methods对象中,最终会在vm
  3. methods中配置的函数,不要用箭头函数,否则this就不是vm
  4. methods中配置的函数,都是被Vue所管理的函数,this的指向是vm或组件实例对象
  5. **@click="demo"@click=“demo($event)”**效果一致,但后者可以传参
<!DOCTYPE html>
<head>
    <meta charset="UTF-8">
    <title>事件的基本使用</title>
    <!-- 引入Vue -->
    <script type="text/javascript" src="../js/vue.js"></script>
</head>
<body>
	<!-- 
		事件的基本使用:
			1.使用v-on:xxx或@xxx绑定事件,其中 xxx 是事件名
			2.事件的回调需要配置在methods对象中,最终会在vm上
			3.methods中配置的函数,不要用箭头函数,否则this就不是vm了
			4.methods中配置的函数,都是被Vue所管理的函数,this的指向是vm或组件实例对象
			5.@click="demo"和@click="demo($event)"效果一致,但后者可以传参
	 -->
	 
    <!-- 准备好一个容器 -->
    <div id="root">
		<h2>欢迎来看{{name}}的笔记</h2>
		<!-- <button v-on:click="showInfo">点我提示信息</button> -->
		<button @click="showInfo1">点我提示信息1(不传参)</button>
		<button @click="showInfo2($event,66)">点我提示信息2(传参)</button>
    </div>

    <script type="text/javascript">
        // 阻止vue在启动时生成生产提示
        Vue.config.productionTip = false
		
		new Vue({ 
			el: '#root',  	  
			data:{ 
				name: 'liqb'
			},
			methods:{
				// showInfo(event){ 
				// 	console.log(event.target.innerText); 
				// 	// console.log(this) // 此处的this是vm 
				// 	// alert('同学你好!') 
				// },
				showInfo1(event){ 
					console.log(event.target.innerText); 
					// console.log(this); // 此处的this是vm 
					alert('同学你好!'); 
				}, 
				showInfo2(event, number){ 
					console.log(event, number); 
					console.log(event.target.innerText); 
					// console.log(this); // 此处的this是vm 
					alert('同学你好!!');
				}
			}
		});
    </script>
</body>
</html>

在这里插入图片描述

1.8.2. 事件修饰符

Vue中的事件修饰符

  1. **prevent **阻止默认事件(常用)
  2. **stop **阻止事件冒泡(常用)
  3. once 事件只触发一次(常用)
  4. capture 使用事件的捕获模式
  5. self 只有event.target是当前操作的元素时才触发事件
  6. passive 事件的默认行为立即执行,无需等待事件回调执行完毕

修饰符可以连续写,比如可以这么用:@click.prevent.stop=“showInfo”

<!DOCTYPE html>
<head>
    <meta charset="UTF-8">
    <title>事件修饰符</title>
    <!-- 引入Vue -->
    <script type="text/javascript" src="../js/vue.js"></script>
	<style type="text/css">
		* {margin-top: 20px;} 
		.demo1 {height: 50px;background-color: skyblue;} 
		.box1 {padding: 5px;background-color: skyblue;} 
		.box2 {padding: 5px;background-color: white;} 
		.list {width: 200px;height: 200px;background-color: skyblue;overflow: auto;} 
		li {height: 100px;}	
	</style>
</head>
<body>
        <!-- 
			Vue中的事件修饰符
				1. prevent 		阻止默认事件(常用)
				2. stop 		阻止事件冒泡(常用)
				3. once 		事件只触发一次(常用)
				4. capture 		使用事件的捕获模式
				5. self 		只有event.target是当前操作的元素时才触发事件
				6. passive 		事件的默认行为立即执行,无需等待事件回调执行完毕
        -->
    <!-- 准备好一个容器 -->
    <div id="root">
        <h2>欢迎来到{{ name }}学习</h2>
        <!-- 阻止默认事件(常用) -->
        <a href="http://www.atguigu.com" @click.prevent="showInfo">点我提示信息</a>

        <!-- 阻止事件冒泡(常用) -->
		<div class="demo1" @click="showInfo"> 
			<button @click.stop="showInfo">点我提示信息</button> 
			<!-- 修饰符可以连续写 --> 
			<!-- <a href="http://www.qq.com" @click.prevent.stop="showInfo">点我提示</a> --> 
		</div>
		
		<!-- 事件只触发一次(常用) -->
		<button @click.once="showInfo">点我提示信息</button>
		
		<!-- 使用事件的捕获模式 --> 
		<div class="box1" @click.capture="showMsg(1)"> 
			div1 
			<div class="box2" @click="showMsg(2)">
				div2 
			</div>
		</div>
		
		<!-- 只有event.target是当前操作的元素时才触发事件; --> 
		<div class="demo1" @click.self="showInfo"> 
			<button @click="showInfo">点我提示信息</button> 
		</div>
		
		<!-- 事件的默认行为立即执行,无需等待事件回调执行完毕; --> <!-- scroll是滚动条滚动,passsive没有影响 --> <!-- wheel是鼠标滚轮滚动,passive有影响 --> 
		<ul @wheel.passive="demo" class="list"> 
			<li>1</li> 
			<li>2</li> 
			<li>3</li> 
			<li>4</li> 
		</ul>
    </div>

    <script type="text/javascript">
        // 阻止vue在启动时生成生产提示
        Vue.config.productionTip = false

        new Vue({
            el: '#root',
            data:{
				name: '尚硅谷'
            },
			methods: {
				showInfo(e) { 
					alert('同学你好!'); 
					// console.log(e.target); 
				}, 
				showMsg(msg) { 
					console.log(msg);
				}, 
				demo() { 
					for (let i = 0; i < 100000; i++) { 
						console.log('#')
					}
					console.log('累坏了');
				}
			}
        });
    </script>
</body>
</html>

1.8.3. 键盘事件

键盘上的每个按键都有自己的名称和编码,例如:Enter(13)。而Vue还对一些常用按键起了别名方便使用

  1. Vue中常用的按键别名
    1. 回车 enter
    2. 删除 **delete **捕获“删除”和“退格”键
    3. 退出 esc
    4. 空格 space
    5. 换行 tab特殊,必须配合keydown去使用
    6. up
    7. down
    8. left
    9. right
  2. Vue未提供别名的按键,可以使用按键原始的key值去绑定,但注意要转为kebab-case(多单词小写短横线写法)
  3. .系统修饰键(用法特殊)ctrl alt shift meta(meta就是win键)
    1. 配合keyup使用:按下修饰键的同时,再按下其他键,随后释放其他键,事件才被触发指定 ctr+y 使用 @keyup.ctr.y
    2. 配合keydown使用:正常触发事件
  4. 也可以使用keyCode去指定具体的按键(不推荐
  5. Vue.config.keyCodes.自定义键名 = 键码,可以去定制按键别名
<!DOCTYPE html>
<head>
    <meta charset="UTF-8">
    <title>键盘事件</title>
    <!-- 引入Vue -->
    <script type="text/javascript" src="../js/vue.js"></script>
</head>
<body>
	<!-- 
		1.Vue中常用的按键别名
			1. 回车	enter
			2. 删除	delete 捕获“删除”和“退格”键
			3. 退出	esc
			4. 空格	space
			5. 换行	tab特殊,必须配合keydown去使用
			6. 上	up
			7. 下	down
			8. 左	left
			9. 右	right
			
		2. Vue未提供别名的按键,可以使用按键原始的key值去绑定,但注意要转为kebab-case(多单词小写短横线写法)
		
		3. 系统修饰键(用法特殊)ctrl  alt  shift  meta(meta就是win键)
		   1. 配合keyup使用:按下修饰键的同时,再按下其他键,随后释放其他键,事件才被触发指定 ctr+y 使用 @keyup.ctr.y
		   2. 配合keydown使用:正常触发事件
		   
		4. 也可以使用keyCode去指定具体的按键(不推荐)
		
		5. Vue.config.keyCodes.自定义键名 = 键码,可以去定制按键别名
		
		keyup按下去抬起来才触发事件
		keydown按下去就触发事件
	 -->
    <!-- 准备好一个容器 -->
    <div id="root">
		<h2>欢迎打开{{name}}笔记</h2>
		<input type="text" placeholder="按下回车提示输入" @keyup.enter="showInfo"><br/>
		<input type="text" placeholder="按下tab提示输入" @keydown.tab="showInfo"><br/>
		<input type="text" placeholder="按下回车提示输入" @keydown.huiche="showInfo"><br/>
    </div>

    <script type="text/javascript">
        // 阻止vue在启动时生成生产提示
        Vue.config.productionTip = false
		Vue.config.keyCodes.huiche = 13 // 定义了一个别名按键
		
		new Vue({ 
			el: '#root',  	  
			data:{ 
				name: 'liqb'
			},
			methods: {
				showInfo(e) {
					// console.log(e.key,e.keyCode)
					console.log(e.target.value);
				}
			}
		});
    </script>
</body>
</html>

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

手撕Twitter推荐算法

Twitter近期开源了其推荐系统源码[1,2,3]&#xff0c;截止现在已经接近36k star。但网上公开的文章都是blog[1]直译&#xff0c;很拗口&#xff0c;因此特地开个系列系统分享下。系列涵盖&#xff1a; Twitter整体推荐系统架构&#xff1a;涵盖图数据挖掘、召回、精排、规则多…

ActiveMQ使用

一、什么是消息中间件 消息中间件顾名思义实现的就是在两个系统或两个客户端之间进行消息传送 二、什么是ActiveMQ ActiveMQ是一种开源的基于JMS&#xff08;Java Message Servie&#xff09;规范的一种消息中间件的实现&#xff0c;ActiveMQ的设计目标是提供标准的&#xff0c…

HCIP之VLAN

目录 网络的三层架构 接入层 无线的缺陷&#xff1a; 上网用户数量增多&#xff0c;网络卡顿的原因 CSMA/CD --- 载波侦听多路访问/冲突检测 CSMA/CA --- 载波侦听多路访问/冲突避免 无线网络没有使用冲突检测技术的原因 汇聚层 连接两条线路的原因 核心层 VLAN VLAN配…

数字设计笔试Verilog手撕代码 - 无符号浮点加法器

前言 今天在网上看笔试题发现有个设计浮点累加器的题目&#xff0c;看了下题目说明感觉不太清楚&#xff0c;恰好记得之前做过浮点数的加法运算的设计&#xff0c;索性就改了下题目需求&#xff0c;作为一个小练习在重新设计一遍。具体设计要求如下&#xff1a; 设计需求 设…

Java锁策略-Java多线程(4)

(各位观众老爷下午好, 创作不易勒, 大家多多点赞收藏&#x1f618;) 咱们废话不多讲, 下面细&#x1f512; 目录 前言 乐观锁 VS 悲观锁 乐观锁 悲观锁 悲观乐观锁优缺点 轻量级锁 VS 重量级锁 重量级锁 轻量级锁 读写锁 自旋锁 互斥锁 可重入锁 VS 不可重入锁 死…

IPSCE

文章目录 1.什么是数据认证&#xff0c;有什么作用&#xff0c;有哪些实现的技术手段?2.什么是身份认证&#xff0c;有什么作用&#xff0c;有哪些实现的技术手段?3.什么VPN技术?4.VPN技术有哪些分类?5.IPSEC技术能够提供哪些安全服务?6.IPSEC的技术架构是什么?7.AH与ESP…

今天面了个字阿里拿38K出来的,真是纹身师闭眼,秀了我一脸啊

公司前段缺人&#xff0c;也面了不少测试&#xff0c;前面一开始瞄准的就是中级的水准&#xff0c;也没指望来大牛&#xff0c;提供的薪资在15-20k&#xff0c;面试的人很多&#xff0c;但平均水平很让人失望。看简历很多都是4年工作经验&#xff0c;但面试中&#xff0c;不提测…

8.java程序员必知必会类库之嵌入式SQL数据库

前言 嵌入式内存数据库&#xff0c;作为嵌入到应用内部的数据库&#xff0c;在正常生产业务流程中使用不多。现在一般公司通用架构都是应用和数据分离&#xff0c;解耦数据和应用。但是&#xff0c;在某些特殊场景中&#xff0c;这种嵌入式数据库是比较好的选择。 在某些单元…

如何在开发阶段保证软件工程质量 (程序员要做些什么)

前言 大家常说&#xff1a;“代码和人&#xff0c;有一个能跑就行”&#xff0c;但这并不意味着我们可以放弃职业道德。与土木工程一样&#xff0c;软件工程也需要一些可度量的指标来衡量产品的交付质量。一个高质量的软件绝对不能只靠测试人员来保证&#xff0c;更不能相信程…

在SaleSmartly(ss客服)中为Messenger 提供无缝支持体验

客户希望您在他们所在的地方与他们见面&#xff0c;这意味着打开多个沟通渠道。但是&#xff0c;当您通过电子邮件、实时聊天、社交等方式进行通信时&#xff0c;对话很容易丢失、被忽视和杂乱无章。 而Messenger的受欢迎程度&#xff0c;以及Meta的无所不在&#xff0c;使Face…

每日学术速递4.18

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.CV 1.Inpaint Anything: Segment Anything Meets Image Inpainting 标题&#xff1a;Inpaint Anything&#xff1a;分割任何东西满足图像修复 作者&#xff1a;Tao Yu, Runseng Feng, R…

企业用户如何选择合适的服务器配置方法教程

随着互联网信息的飞速发展&#xff0c;任何企业都脱离不了互联网&#xff0c;越来越多的企业都通过互联网实施无纸化的办公&#xff0c;互联网推广一体化整体型推广、互联网电子商务。中小型企业网站如何选购云服务器配置呢&#xff1f;但是&#xff0c;实现这些的最最基础的条…

ai改写句子软件-ai改写

AI免费伪原创&#xff1a;助力网站内容升级 您是否曾经为网站优化而烦恼&#xff0c;无论是内容更新还是SEO优化&#xff0c;都需要大量的时间和精力。但是&#xff0c;您是否知道&#xff0c;现在有一款能够使用AI技术来帮助您完成这些任务&#xff0c;而且还是免费的呢&…

【Git 学习】

Git 学习 一、Git的使用1. Git下载安装2. Git 命令3. Git推送代码步骤4. Git基本工作流程5. Git历史版本切换6. Git分支管理6.1 创建新分支6.2 切换分支6.3 合并分支6.4 删除分支 7. 远程仓库的工作流程7.1 具体流程 8.推送到远程仓库9. 代码冲突问题10. IDEA 集成Git10.1 版本…

说说webpack的构建流程?

① 初始化流程 从配置文件和 Shell 语句中读取与合并参数&#xff0c;并初始化需要使用的插件和配置插件等执行环境所需要的参数。 配置文件默认下为 webpack.config.js&#xff0c;也可以通过命令的形式指定配置文件&#xff1b; 主要作用是用于激活webpack的加载项和插件&am…

手写axios源码系列一:axios核心知识点

文章目录 axios的核心功能1、axios 函数对象2、dispatchRequest 发送请求3、interceptors 拦截器4、cancelToken 取消请求 最近从头搭建了一个vue小项目&#xff0c;想使用 axios 作为请求接口的第三方库。结果使用了 axios 这么长时间&#xff0c;想封装一下 axios &#xff0…

Nacos2.2.2开启鉴权配置

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、更改application.properties中的配置二、修改配置 前言 最近公司开启了一个新的电商项目&#xff0c;项目中用到了Naocs作为注册中心和配置中心&#xff0…

WindowsUbuntu下python程序打包

Python程序的运行必须要有Python的环境&#xff0c;但是程序编出来是用的&#xff0c;如果是给别人用&#xff0c;而他/她的电脑上又没有Python程序运行的环境怎么办呢&#xff1f;总不能让他/她去安装一个吧&#xff1f;这时我们就要将Python程序打包为exe可执行文件&#xff…

【文章学习系列之模型】PatchTST

本章内容 文章概况模型结构实验结果长期预测表征学习 消融实验分块和通道独立性不同的回顾窗口 总结 文章概况 《A Time Series is Worth 64 Words: Long-term Forecasting with Transformers》是2023年发表于ICLR的一篇文章。该文章借鉴了计算机视觉领域的Vision Transformer…

树形DP分析

树形dp 简单来说树形 d p 就是在树上做 d p 罢了 简单来说树形dp就是在树上做dp罢了 简单来说树形dp就是在树上做dp罢了 树嘛&#xff0c;就要符合除了根节点外每个节点只有一个父节点 树嘛&#xff0c;就要符合除了根节点外每个节点只有一个父节点 树嘛&#xff0c;就要符合除…