Vue:Vue事件整理

news2025/2/24 18:04:32

文章目录

  • 前言
  • 一、Vue基本事件
        • this对象
        • 传递参数
        • 总结
  • 二、事件修饰符
  • 三、键盘事件
        • keyup/keydown
  • 四、ElementUi


前言

本篇复习Vue中的事件处理,包含事件基本响应、事件修饰符、键盘事件等内容

一、Vue基本事件

Vue中,设置点击、鼠标滚动和键盘输入等相应事件,可以用v-on指令进行绑定

v-on指令是事件绑定指令,当用户需要点击,按下键盘,滚动鼠标等操作时,想要添加一些自己的逻辑处理时,就可以为特定的元素绑定一些特定的事件。

例如:我们先在被vue实例挂载的标签div中,放入一个按钮为input标签,我们为这个input标签设置事件,做法如下:

  • 在标签内部写入v-on指令,冒号(:)后面就是事件名,等号(=)后面就是需要绑定的事件方法名称;
  • @事件名=事件方法名称
<div id="app">
	<input type="button" value="事件绑定" v-on:click="方法名">
	<input type="button" value="事件绑定" v-on:mouseenter="方法名">
	<input type="button" value="事件绑定" v-on:dblclick="方法名">

	<input type="button" value="事件绑定" @click="方法名">
	<input type="button" value="事件绑定" @mouseenter="方法名">
	<input type="button" value="事件绑定" @dblclick="方法名">
</div>

而我们对应的方法名,是写在相关挂载的Vue对象的methods属性中,换句话说,事件的回调需要设置在methods中:

<body>
		<div id="app">
			<input type="button" value="事件绑定" v-on:click="todo">
			<input type="button" value="事件绑定" v-on:mouseenter="todo">
			<input type="button" value="事件绑定" v-on:dblclick="todo">
		</div>
		<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
		<script>
			var  app = new Vue({
				el:"#app",
				methods:{
					todo:function() {
						//方法执行的逻辑
					}
				}
			})
		</script>
	</body>

this对象

在Vue函数中,this默认指向包含函数的Vue对象,但是如果使用箭头函数,则this对象表示窗体对象

在日常开发中,通常不建议使用箭头函数,因为这样会改变函数的this对象,而我们通常需要在方法内部通过this关键字访问定义在data中的数据

传递参数

v-on传递参数主要有三种情况

  • 无参方法;
  • 有参方法;
  • 既需要参数,也需要浏览器产生的event事件

无参方法实现时,可以在调用方法时加入小括号,也可以不加小括号;
当方法有参数时,需要在调用方法时传入参数,当不写参数时默认为undefined。不写小括号,默认将浏览器产生的event事件传给方法;
当方法即需要参数,又需要event事件时,必须使用$event才可以返回事件; 当使用event时或者不写时返回undefined;
当方法中不填写任何值时,参数与evnet事件均为undefined; 当不填写小括号时,默认将event事件传入方法

总结

在这里插入图片描述

二、事件修饰符

Vue中,可以通过在事件名加上一些修饰符,为事件增添相对应的效果

例如,我们希望在点击一个a标签时,能够显示一个弹窗之类的效果,但是不希望其进行跳转,我们可以使用prevent标签,阻止其默认行为

具体如下:
.stop 阻止事件继续传播
.prevent 阻止标签默认行为
.capture 使用事件捕获模式,即元素自身触发的事件先在此处处理,然后才交由内部元素进行处理
.self 只当在 event.target 是当前元素自身时触发处理函数
.once 事件将只会触发一次
.passive 告诉浏览器你不想阻止事件的默认行为

例:

<!-- 阻止单击事件继续传播 -->
<a v-on:click.stop="doThis"></a>

<!-- 提交事件不再重载页面 -->
<form v-on:submit.prevent="onSubmit"></form>

<!-- 修饰符可以串联 -->
<a v-on:click.stop.prevent="doThat"></a>

<!-- 只有修饰符 -->
<form v-on:submit.prevent></form>

<!-- 添加事件监听器时使用事件捕获模式 -->
<!-- 即元素自身触发的事件先在此处处理,然后才交由内部元素进行处理 -->
<div v-on:click.capture="doThis">...</div>

<!-- 只当在 event.target 是当前元素自身时触发处理函数 -->
<!-- 即事件不是从内部元素触发的 -->
<div v-on:click.self="doThat">...</div>

<!-- 点击事件将只会触发一次 -->
<a v-on:click.once="doThis"></a>

<!-- 滚动事件的默认行为 (即滚动行为) 将会立即触发 -->
<!-- 而不会等待 `onScroll` 完成  -->
<!-- 这其中包含 `event.preventDefault()` 的情况 -->
<div v-on:scroll.passive="onScroll">...</div>

三、键盘事件

Vue中,我们可以通过为键盘按下/键盘弹起这一些行为设立相应的触发事件,我们可以通过键盘码/键盘别名对键盘按下设立事件,也可以通过键盘别名设立相关事件,具体如下:

keyup/keydown

<input v-on:keyup.13="submit">

<input @keyup.enter="submit">      <!-- 缩写形式 -->

针对不同的事件,我们选择keyup/keydown两种形式设置事件,这个结合具体的应用场景选择即可

相应键盘具体的按键别名如下,我们推荐通过键盘按键别名进行事件设置:
.enter
.tab
.delete (捕获“删除”和“退格”键)
.esc
.space
.up
.down
.left
.right

对于一些组件,如Ctrl+1 2 3,Alt + 1 2 3,我们可以通过书写多个.的方式进行修饰

<!-- Alt + C -->
<input @keyup.alt.67="clear">
<!-- Ctrl + Click -->
<div @click.ctrl="doSomething">Do something</div>

与按键别名不同的是,修饰键和 keyup 事件一起用时,事件引发时必须按下正常的按键。换一种说法:如果要引发 keyup.ctrl,必须按下 ctrl 时释放其他的按键;单单释放 ctrl 不会引发事件。

<!-- 按下Alt + 释放C触发 -->
<input @keyup.alt.67="clear">
 
<!-- 按下Alt + 释放任意键触发 -->
<input @keyup.alt="other">

<!-- 按下Ctrl + enter时触发 -->
<input @keydown.ctrl.13="submit">

四、ElementUi

对于elementUI的input,我们需要在后面加上.native, 因为elementUI对input进行了封装,原生的事件不起作用。

<input v-model="form.name" placeholder="昵称" @keyup.enter="submit">

<el-input v-model="form.name" placeholder="昵称" @keyup.enter.native="submit"></el-input>

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

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

相关文章

vue3【列表渲染】v-for 详细介绍(vue中的“循环”)

vue 常用语法——列表渲染 v-for文章简介v-for 主要内容&#x1f53a;item in itemsv-for 变量的作用域v-for 与对象在 v-for 里使用范围值&#x1f53a;<template> 上的 v-forv-for 与 v-if&#x1f53a;通过 key 管理状态&#x1f53a;组件上使用 v-forsummary下期预告…

前端设置页面字体尺寸跟随屏幕大小而进行变化

越来越多的前端项目现在需要这个操作&#xff0c;其操作的原因很简单&#xff0c;你的项目可能跑在小尺寸分辨率的电脑上&#xff0c;也有可能在大尺寸的会议平板上&#xff0c;更有甚者是在LED上。那么如何让你的项目根据屏幕分辨率的大小而自动变化&#xff0c;修改页面展示字…

运行调试前端项目之ts

本文分四个部分&#xff1a; 直接node或ts-node运行ts通过package.json文件运行tsts翻译为js后运行js在ide中运行和调试ts — vscode中&#xff0c;配置launch.json文件&#xff0c;来调试ts&#xff0c;与js调试一致 — idea、webstorm中&#xff0c;安装“run configuration…

vue3 超好用的富文本编辑器

Ⅰ. 前言 quillEditor 毫无疑问一款非常强大的 富文本编辑器 在 vue 中一个也非常好用 &#xff0c;而且也十分轻量的&#xff1b; 然而如今的vue3 我们该如何使用它呢 &#xff1a; Ⅱ.vue3 中 安装 quillEditor ① 下载 npm install vueup/vue-quillalpha --save② 在ma…

vite首次打开界面加载慢问题/解决

写在前面 网上都说vite要比webpack快&#xff0c;但个人感受&#xff0c;默认情况下, vite项目的启动确实比webpack快&#xff0c;但如果某个界面是首次进入&#xff0c;且依赖比较多/比较复杂的话&#xff0c;那就会比较慢了。 这篇文章就是用来记录&#xff0c;关于vite慢的…

java实现文件的下载和删除(返回输出流至前端)

文章目录引言实现步骤下载文件删除文件删除目录&#xff08;及目录下全部文件&#xff09;实现代码测试引言 最近需求中有使用到文件的下载功能&#xff0c;在之前的学习过程中我没有去注重过文件处理方面的学习&#xff0c;所以写起来还是有点吃力&#xff0c;将写出的工具类…

浏览器的组成部分

什么是浏览器&#xff1f; Web 浏览器简称为浏览器&#xff0c;是一种用于访问互联网上信息的应用软件。浏览器的主要功能是从服务器检索 Web 资源并将其显示在 Web 浏览器窗口中。 Web 资源通常是 HTML 文档&#xff0c;但也可能是 PDF、图像、音频、视频或其他类型的内容。…

IDEA2022创建Web项目配置Tomcat(图文说明)

下面是在idea上面配置一个Tomcat的项目环境。 1.首先创建普通的一个Java项目&#xff0c;不要选择JavaEE 2.创建完成后按照下图所示&#xff0c;依次选择 File -> Add Framework Support -> Web Application -> 在WEB-INF文件夹下创建classes和lib文件夹 3.下面配置…

若依前后端分离版:增加新的登录接口,用于小程序或者APP获取token,并使用若依的验证方法

LoginController类 具体代码 /*** app 登录*/AnonymousAccessPostMapping("login")public AjaxResult login(RequestBody LoginBody loginBody) {AjaxResult ajax AjaxResult.success();// 生成令牌String token loginService.login(loginBody.getUsername(), logi…

【项目实战】登录与注册业务的实现(前端+后端+数据库)

本示例基于Vue.js和mint UI实现。 目录 一、数据库的创建 二、后端接口与数据库的连接 三、前端代码实现 1.注册页相关代码 2.注册页效果 3.登录页相关代码 4.登录页效果 四、注册登录演示 五、项目文件结构 一、数据库的创建 此处以Navicat软件进行创建&#xff0c;新…

刚去公司,发现node版本过高,如何将node版本降低?

我们可以安装nvm&#xff0c;node版本管理器来实现。 1、nvm是什么&#xff1f; nvm&#xff08;node.js version management&#xff09;&#xff0c;是一个nodejs的版本管理工具。nvm和n都是node.js版本管理工具&#xff0c;为了解决node.js各种版本存在不兼容现象可以通过…

uniapp自动更新

一uniapp自动更新流程逻辑 实现检测版本更新并下载新版本&#xff1a;通过后台返回更新版本的版本号和当前版本号做比较&#xff0c;不同则提示有新版本需要更新&#xff0c;下载地址又后台返回 uniapp自动更新设计思路 在服务端配置一个最新的应用版本号&#xff1b; 并将打包…

【jQuery从入门到精通】

文章目录jQuery简介jQuery下载与安装下载版本说明优点安装jQuery核心DOM对象和Jquery包装集对象dom对象的获取获取一个不存在的dom对象jQuery对象的获取获取一个不存在的jQuery对象DOM对象与jQuery对象的转换dom对象转jQuery对象jQuery对象转dom对象jQuery选择器基础选择器层次…

【ES6丨前端进阶基础 】二,ES6rest参数,Symbol第七种数据类型

CSDN话题挑战赛第2期 参赛话题&#xff1a;面试宝典 目录​​​​​​​ 前言 一&#xff0c;函数参数的默认值设置 二&#xff0c;rest参数 三&#xff0c;扩展运算符 扩展运算符应用 1.合并数组 2.数组的克隆 3.伪数组转化成真正的数组 四&#xff0c;Symbol第7种数…

vue脚手架(2022年9月份nodejs16.17.0版本)

vue脚手架(2022年9月份nodejs16.17.0版本) 目录 vue脚手架(2022年9月份nodejs16.17.0版本) 下载地址 环境变量设置 全局文件夹与缓存文件夹设置 修改国内的【阿里】镜像 查看vue信息 更新npm 新增环境变量 安装vue与router 安装vue脚手架 Vue项目创建 项目层级 …

GitHub Copilot的下载使用方法(2022最新)

流程 1.去官网提交申请 填写邮件 2.等待几天收到邮件 3.点击邮件链接下载copilot-docs-main 4.打开vsCode&#xff0c;在扩展商店搜索下载github copilot 5.安装完成之后会在vsCode右下角提示登录github以及允许copilot 6.如果你有资格那么vsCode右下角就会出现copilot的…

Window.location用法

Window.location 详细介绍 本文翻译自 samanthaming 发表于 dev.to 的博文 原文地址 window.location Cheatsheet - DEV Community &#x1f469;‍&#x1f4bb;&#x1f468;‍&#x1f4bb; 如果你需要获取网站的 URL 信息&#xff0c;那么 window.location 对象就是为你准备…

【vue2可视化开发】新手会遇到的问题——大屏自适应

简要描述 开发可视化大屏第一步&#xff0c;必须要考虑适配不同屏幕的问题&#xff0c;在网络上查看资料&#xff0c;总结了一个目前最适合可视化开发的自适应方案——v-scale-screen组件 1. 安装 注&#xff1a;vue2使用v-scale-screen1.0.0版本&#xff0c;vue3使用v-scal…

Qt 下拉复选框(MultiSelectComboBox)(一) 实现下拉框多选,搜索下拉框内容

文章目录本系列目录前言一、QCombobox的组成二、MultiSelectComboBox实现1. 总体实现2. QLineEdit部分3. QListWidget部分1. 搜索框部分2. 选项部分4. 对外接口定义5. 代码实现总结本系列目录 Qt 下拉复选框&#xff08;MultiSelectComboBox&#xff09;(一) 实现下拉框多选&a…

vue3中使用ref语法糖

自从引入组合式 API 的概念以来&#xff0c;一个主要的未解决的问题就是 ref 和响应式对象到底用哪个。响应式对象存在解构丢失响应性的问题&#xff0c;而 ref 需要到处使用 .value 则感觉很繁琐&#xff0c;并且在没有类型系统的帮助时很容易漏掉 .value 以上是官方原话,大概…