第一句子网 - 唯美句子、句子迷、好句子大全
第一句子网 > 07——Vue 中的事件处理 以及 事件修饰符 键盘事件

07——Vue 中的事件处理 以及 事件修饰符 键盘事件

时间:2020-11-15 03:19:58

相关推荐

07——Vue 中的事件处理 以及 事件修饰符  键盘事件

Vue 中的事件处理

案例一:事件的基本使用1、问题一:showInfo 方法可以接收参数嘛?2、v-on:click="showInfo 的简写形式"3、需求问题一:事件传参4、总结事件修饰符1、prevent 阻止事件修饰符键盘事件

案例一:事件的基本使用

<!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>事件的基本使用</title><script type="text/javascript" src="../js/vue.js"></script></head><body><!-- 准备好一个容器 --><div id="root"><h2>欢迎来到{{name}}学习</h2><Button v-on:click="showInfo">点我提示信息</Button></div></body><script type="text/javascript">Vue.config.productionTip = false // 设置为 false 以阻止 vue 在启动时生成生产提示。const vm = new Vue({el:'#root',data:{name:'尚硅谷',},methods:{showInfo() {alert('同学你好')}}}) console.log(vm);</script></html>

页面

1、问题一:showInfo 方法可以接收参数嘛?

<body><!-- 准备好一个容器 --><div id="root"><h2>欢迎来到{{name}}学习</h2><Button v-on:click="showInfo">点我提示信息</Button></div></body><script type="text/javascript">Vue.config.productionTip = false // 设置为 false 以阻止 vue 在启动时生成生产提示。const vm = new Vue({el:'#root',data:{name:'尚硅谷',},methods:{showInfo(event) {// alert('同学你好')console.log(event.target.innerText)// console.log(this); // 此处的 this 是vm对象}}}) // console.log(vm);</script>

可以传递参数

2、v-on:click=“showInfo 的简写形式”

<!-- 准备好一个容器 --><div id="root"><h2>欢迎来到{{name}}学习</h2><Button v-on:click="showInfo">点我提示信息</Button><Button @click="showInfo">点我提示信息</Button></div>

3、需求问题一:事件传参

想通过事件处理的方法传递一个数字值,怎么传递?

类似于页面点击删除按钮,将学生 id 通过方法传递过来

<!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>事件的基本使用</title><script type="text/javascript" src="../js/vue.js"></script></head><body><!-- 准备好一个容器 --><div id="root"><h2>欢迎来到{{name}}学习</h2><Button @click="showInfo1">点我提示信息1(不传参)</Button><Button @click="showInfo2($event, 66)">点我提示信息2(传参)</Button></div></body><script type="text/javascript">Vue.config.productionTip = false // 设置为 false 以阻止 vue 在启动时生成生产提示。const vm = new Vue({el:'#root',data:{name:'尚硅谷',},methods:{showInfo1(event) {// alert('同学你好')console.log(event.target.innerText)// console.log(this); // 此处的 this 是vm对象},showInfo2(event,number) {console.log(event, number);alert('同学你好!!')}}}) // console.log(vm);</script></html>

页面

4、总结

事件的基本用法

1、使用v-on:xxx@xxx绑定事件,其中xxx是事件名2、事件的回调需要配置在methods对象中,最终会在vm上3、methods中配置的函数,不要用箭头函数,否则 this 就不是vm了4、methods中配置的函数,都是被 Vue所管理的函数,this 的指向是vm或组件实例对象5、@click="demo"@click="demo($event)"效果一致,但后者可以传参

事件修饰符

1、prevent 阻止事件修饰符

Vue中的事件修饰符

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

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

<!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>事件修饰符</title><script type="text/javascript" src="../js/vue.js"></script><style>* {margin-top: 20px;}.demo1 {height: 50px;background-color: skyblue;}.box1 {padding: 5px;background-color: skyblue;}.box2 {padding: 5px;background-color: orange;}.list {width: 200px;height: 20px;background-color: peru;overflow: auto;}li {height: 100px;}</style></head><body><!-- 准备好一个容器 --><div id="root"><h2>欢迎来到{{name}}学习</h2><!-- 阻止默认事件(常用) --><a href="" @click.prevent="showInfo">点我提示信息</a><!-- 阻止事件冒泡(常用) --><div class="demo1" @click="showInfo"><button @click.stop="showInfo">点我提示信息</button></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.stop="showInfo">点我提示信息</button></div><!-- 事件的默认行为立即执行,无需等待事件回调执行完毕 @scroll 和 @wheel的区别?--><ul @wheel.passive="demo" class="list"><li>1</li><li>2</li><li>3</li><li>4</li></ul></div></body><script type="text/javascript">Vue.config.productionTip = false // 设置为 false 以阻止 vue 在启动时生成生产提示。const vm = new Vue({el:'#root',data:{name:'尚硅谷',},methods:{showInfo(e) {// e.preventDefault()// 阻止默认行为alert('同学你好')},showMsg(msg) {console.log(msg);},demo() {console.log('@');}}}) // console.log(vm);</script></html>

键盘事件

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

1、Vue中常用的按键别名

回车enter

删除delete捕获“删除”和“退格”键

退出esc

空格space

换行tab特殊,必须配合keydown去使用

up

down

left

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><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>键盘事件</title><script type="text/javascript" src="../js/vue.js"></script></head><body><!-- 准备好一个容器 --><div id="root"><h2>欢迎来到{{name}}学习</h2><input type="text" placeholder="按下回车提示输入" @keyup.enter="showInfo"></input></div></body><script type="text/javascript">Vue.config.productionTip = false // 设置为 false 以阻止 vue 在启动时生成生产提示。vue.config.keyCodes.huiche = 13 // 定义了一个别名按键const vm = new Vue({el:'#root',data:{name:'尚硅谷',},methods:{showInfo(event) {// if (event.keyCode !== 13) {// return// }// console.log(event.key, event.keyCode);console.log(event.target.value)},}}) // console.log(vm);</script></html>

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。