Vue事件处理

news/2024/11/29 19:34:02/

1. 事件绑定

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>/*1. 监听事件: 可以用v-on指令监听DOM事件,并在触发时运行一些JavaScript代码; 2. 事件处理方法: 然而许多事件处理逻辑会更为复杂,所以直接把JavaScript代码写在v-on指令中是不可行的, 因此v-on指令可以接收一个需要调用的方法名称; <button v-on:click="greet">Greet</button>       // greet是Vue实例中定义的方法       3. 内联处理器中的方法:  <button v-on:click="say('hi')">Say hi</button>new Vue({methods: { say: function(message) { alert(message); }}}); 4. v-on: 用来绑定事件;可以简写为@; */</style>
</head><body><div id="app"><div>{{num}}</div><div><!-- 1.点击事件a. 绑定事件: v-on:click  或  @click;b. 调函函数:i.  直接绑定函数名称;   @click='handle'ii. 调用函数;          @click='handle()'--><button v-on:click='num++'>点击1</button><button v-on:click='handle'>点击2</button><button v-on:click='handle()'>点击3</button><button @click='handle()'>点击4</button><hr><!-- 2.参数传递 $event: 事件对象,这是固定写法;a. 如果事件绑定函数调用,那么事件对象($event)必须作为最后一个参数显示传递,并且事件对象的名称必须是$event;b. 如果事件直接绑定函数名称,那么事件对象将默认作为事件函数的第一个参数; (和原生js是一样的)--><button @click='handle1(123,456,$event)'>按钮1</button><button @click='handle2'>按钮2</button><button @click='handle2($event)'>按钮3</button></div></div><script src="../vue.js"></script><script>var vm = new Vue({el: '#app',data: {num: 0},methods: {handle() {console.log('ttt');}, /* 参数传递1: */handle1: function(param1, param2, event) {this.num++;console.log(param1+param2);console.log(event.target.tagName);},/* 参数传递2: */handle2: function(event) {console.log(event.target.innerHTML);}}})</script>
</body>
</html>

2. 事件处理

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><script src="../vue.js"></script><style>div {width: 200px;height: 100px;}</style><script>/*1. Vue.js 为v-on提供了事件修饰符来处理 DOM事件细节,如:event.preventDefault() 或 event.stopPropagation();   Vue.js 通过由点.表示的指令后缀来调用修饰符; .stop:      阻止冒泡.prevent:   阻止默认事件.capture:   阻止捕获.self:      只监听触发该元素的事件.once:      只触发一次.left:      左键事件.right:     右键事件.middle:    中间滚轮事件2. 按键修饰符 Vue 允许为 v-on 在监听键盘事件时添加按键修饰符: 示例:<input v-on:keyup.enter="submit">.enter:.tab:.delete:.esc:.space:.up:.down:.left:.right:.ctrl:.alt:.shift:.meta: windows徽标键*/</script>
</head><body><div id="app"><div @click='test(2,3)' style="background-color: yellow"></div>     <!-- 方法的测试 --></div><script>var vm = new Vue({el: '#app',data: {},methods: {test(num1,num2) {alert(num1 + num2);},show() {console.log('右键按下');}},computed: {},watch: {}});// vm.test(1, 3);       /* 也可以直接用JavaScript的形式进行函数的调用 */</script>
</body></html>

3. 事件修饰符1

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>/* 事件修饰符:.stop:      阻止冒泡;.prevent:   阻止默认行为; 按键修饰符:.enter:     回车键; .delete:    delete按键; */</style>
</head><body><div id="app"><h1>事件修饰符</h1><div @click='father'>                                                   <!-- .self修饰符, 只有点击自身才触发, 冒泡上来触发的不算( @click.self, try it...) -->                       <button @click.stop='son'>点击儿子</button>                         <!-- .stop修饰符, 此时阻止冒泡了 --></div><div><a href="https://www.baidu.com" @click.prevent>百度</a>             <!-- .prevent修饰符, 此时阻止默认行为了 --></div><hr><h1>按键修饰符</h1><form action="">userName: <input type="text" v-model='name' @keyup.delete='clearAll'><br>passWord: <input type="text" v-model='password' @keyup.enter='enter'><input type="button" name="" id="" value="提交" @click='submit'></form></div><script src="../vue.js"></script><script>var vm = new Vue({el: '#app',data: {name: 'tom',password: 'admin'},methods: {father: function() {console.log('father');},son: function(event) {console.log('son');// event.stopPropagation();         // 阻止冒泡(原生的js)},handle: function() {// event.preventDefault();          // 阻止默认行为(原生的js)},enter() {console.log('666');}, submit: function() {console.log(this.name + ' ' + this.password);},clearAll: function() {this.name = '';}}}); </script>
</body></html>

4. 事件修饰符2

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><script>/*.stop:      阻止冒泡.prevent:   阻止默认事件(比如表单提交按钮,点击它将进行提交; 再比如说超链接,点击它将进行跳转)这些个默认行为,我们都可以通过prevent进行阻止,不让它产生默认行为.capture:   阻止捕获.self:      只监听触发该元素的事件(不会受到冒泡的影响,换句话说,只有真正的触发了它,才会响应).once:      只触发一次(换句话说,只有第一次触发它时,才会进行响应,>=第二次触发时,将不会再响应相应的事件).left:      左键事件.right:     右键事件.middle:    中间滚轮事件案例:<div id="ok"><div v-on:click="click_div"><button v-on:click="click_btn">点击</button></div></div>a. 此时存在冒泡行为, 点击button后触发btn点击事件,然后触发div的点击事件(也即是冒泡到其父亲上);b. 如果v-on:click.stop="click_btn", 此时就取消了btn的冒泡事件;*/</script>
</head><body><div id="ok"><a href="https://www.baidu.com" v-on:click.prevent>跳转百度</a><div v-on:click.self="click_div"><button v-on:click.once="click_btn">点击</button></div><button v-on:click.left="leftHandle">左键触发</button><button v-on:click.middle="middleHandle">中键触发</button><button v-on:click.right="rightHandle">右键触发</button><div v-on:click="hello">sfsfs</div></div><script src="../vue.js" type="text/javascript"></script><script type="text/javascript">var vm = new Vue({el: '#ok',data: {},methods: {click_div() {alert('点击了div');},click_btn() {alert('点击了button');},leftHandle() {alert('左键触发');},rightHandle() {alert('右键触发');},middleHandle() {alert('中键触发');},hello() {alert('HelloWorld');}}});</script>
</body></html>

5. 自定义事件修饰符

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head><body><div id="app"><h1>自定义按键修饰符</h1><form action="">userName: <input type="text" v-model='name' v-on:keyup.65='clear'><br>   <!-- 没问题 -->userName: <input type="text" v-model='name' v-on:keyup.a='clear'><br>    <!-- 自定义按键修饰符 -->passWord: <input type="text" v-model='password' v-on:keyup.enter=''><input type="button" name="" id="" value="提交" v-on:click=''></form></div><script src="../vue.js"></script><script>/* 自定义按键修饰符:  a就是a键盘; 这和delete: 就代表是delete键是一样的意思; */Vue.config.keyCodes.a = 65;   var vm = new Vue({el: '#app',data: {num: 0,name: 'Zhang',password: '123'},methods: {clear: function() {this.name = '';}}})</script>
</body></html>

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

相关文章

在Centos Stream 9上Docker的实操教程(三) - Docker容器数据卷

在Centos Stream 9上Docker的实操教程 - Docker容器数据卷 问题场景Docker容器数据卷简单介绍数据卷使用操作实例安装redis验证配置文件生效验证数据是否丢失 结语 问题场景 Docker容器我们可以理解就是微型的linux系统&#xff0c;在使用容器的时候自然会产生一系列数据文件&…

【python+appium】自动化测试

pythonappium自动化测试系列就要告一段落了&#xff0c;本篇博客咱们做个小结。 首先想要说明一下&#xff0c;APP自动化测试可能很多公司不用&#xff0c;但也是大部分自动化测试工程师、高级测试工程师岗位招聘信息上要求的&#xff0c;所以为了更好的待遇&#xff0c;我们还…

SM国密算法(一)

一、简介 国密即国家密码局认定的国产密码算法&#xff0c;包括&#xff1a;SM1&#xff08;SCB2&#xff09;、SM2、SM3、SM4、SM7、SM9、祖冲之密码算法&#xff08;ZUC) 等。 二、分别介绍 SM1、SM4、SM7、祖冲之密码&#xff08;ZUC&#xff09;是对称算法。 SM2、SM9是…

Java:FileOutputStream

操作本地文件的字节输出流&#xff0c;可以把程序中的数据写到本地文件中。 1.写入数据的三种方法 void write(int b)&#xff1a;一次写一个字节数据void write(byte[ ] b)&#xff1a;一次写一个字节数组数据void write(byte[] b, int off, int len)&#xff1a;一次写一个…

浅谈NoSQL数据库

数据库 数据库&#xff0c;又称为数据管理系统&#xff0c;是处理的数据按照一定的方式储存在一起&#xff0c;能够让多个用户共享、尽可能减小冗余度的数据集合&#xff0c;简而言之可视为电子化的文件柜——存储电子文件的处所。 数据库有&#xff1a;Oracle数据库、ACCESS数…

【vue3】关于vue3中的数据双向绑定

Vue 3 的数据双向绑定是指将数据模型与视图之间建立起双向的关联关系&#xff0c;当数据发生变化时&#xff0c;视图会自动更新&#xff0c;反之亦然。Vue 3 采用了一种名为"响应式"的机制来实现数据的双向绑定。 在 Vue 3 中&#xff0c;你可以使用ref和reactive来…

【Linux笔记一篇搞定】

Linux笔记 文件相关 输出&#xff0c;查看 # more&#xff0c;less翻页显示文件内容 more 只能向下翻页 less 可以上下翻页 空格键翻页 上下键移动 q退出tail # 用于显示文件末尾几行 -n 指定显示的行数 -f 追踪显示文件更新&#xff08;一般用于查看实时日志&#xff09; -…

华为OD机试(2023.5新题) 学生方阵(java,py,c++,js)

华为OD机试真题目录&#xff1a;真题目录 本文章提供java、python、c、jsNode四种代码 题目描述 学校组织活动&#xff0c;将学生排成一个矩形方阵 请在矩形方阵中找到最大的位置相连的男生数量 这个相连位置在一个直线上&#xff0c;方向可以是水平的&#xff0c;垂直的&…