目录
5.self:只有event.target是当前操作的元素时才出发的事件
6.passive:事件的默认行为立即执行,无需等待事件回调执行完毕
事件的基本使用:
使用v-on:xxx 或 @xxx绑定事件,其中xxx是事件名
事件的回调需要配置在methods对象中,最终会在vm上
methods中配置的函数,不用箭头函数!否则this就不是vm了
methods中配置的函数,都是被Vue所管理的函数,this的指向是vm或组件实例对象
@click="demo" 和 @click=“demo($event)”效果一致,但后者可以传入参数
- html>
- <html>
- <head>
- <meta charset="UTF-8">
- <title> 初识vuetitle>
-
- <script type="text/javascript" src="../js/vue.js">script>
- head>
- <body>
- <div id="root">
- <h2>欢迎来到{{name}}学习h2>
-
- <button v-on: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:'尚硅谷'
- },
- methods:{
- showInfo1(event){
- // 打印标签中的文字
- console.log(event.target.innerText)
- alert('同学你好!')
- },
- showInfo2(event,number){
- console.log(event,number)
- alert('同学你好!!')
-
- }
- }
- })
- script>
- body>
- html>
-
- <div id="root">
- <h2>欢迎来到{{name}}学习h2>
- <a href="http://www.atguigu.com" @click.prevent="showInfo">点我提示信息a>
- div>
在我们之前学过的标签中,如果我们在页面中点击a标签所呈现出来的效果,我们的页面立马会跳转到href页面,但是我们可以阻止其页面跳转
出现下面这个页面,当我们点击确定之后,发现页面并没有跳转
-
- <div class="demo1" @click="showInfo">
- <button @click.stop="showInfo">点我提示信息button>
- div>
正常情况下,当我们点击按钮的时候会出现两次弹窗(就我们上面这个代码而言),但是在实际操作中并没有出现两次弹窗(冒泡) ,原因就是@click.stop。当我们使用时,就阻止事件冒泡,我们点击按钮时,仅仅会出发按钮的弹窗,并不会触发div的弹窗。
-
-
- <button @click.once="showInfo">点我提示信息button>
我们单击按钮的时候,通常情况下不论我们点击几次,都会出现弹框,但是当我们加了@click.once之后,这个按钮只能单击一次,第二次及其以后不再出现弹窗
-
- <div class="box1" @click.capture="shwoMsg(1)">
- div1
- <div class="box2" @click="showMsg(2)">
- div2
- div>
- div>
正常情况下, 是先捕获再冒泡,例如上面正常的代码中先捕获box1再捕获box2,之后box2冒泡再box1冒泡,控制台上先输出2再输出1
但是我们添加了@click.capture之后,我们会发现当我们在捕获box1的时候,也完成了box1的冒泡,最终控制台上的输出内容是先1再2
- <div class="demo1" @click.self="showInfo">
- <button @click="showInfo">点我提示信息button>
- div>
正常情况下不加.self的时候,当我们单击按钮,会打印出两个
当我们添加.self的,我们再点击按钮,只会出现一个,那就是按钮所绑定的函数运行,上面那个div便不会再运行(这个.self也可以说变相的阻止了冒泡)
下面这个,只要滚动条动,就能触发函数
下面这个,只要鼠标的滚轮动,就能触发函数
触发流程:先滚动滚轮-->触发demo函数--->demo函数完成后再触发滚动条滚动效果
在我们下面这个代码后加了passive,当我们的demo函数没有执行完时,滚轮也会滑动
- html>
- <html>
- <head>
- <meta charset="UTF-8">
- <title> 初识vuetitle>
-
- <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>
-
- <script type="text/javascript">
- //阻止vue在启动时生成生产提示
- Vue.config.productionTip=false
-
- new Vue({
- el:'#root',
- data:{
- name:'尚硅谷'
- },
- methods:{
- showInfo(e){
- // 为了不是每一个案件都能触发,我们规定只有回车才能触发
- // 回车的键盘码是13,当不是13的时候,就结束函数,不运行console
- // if(e.keyCode!==13)
- // return
- //但是我们一般不使用这种方式了
- console.log(e.target.value)
- }
- }
- })
-
- script>
- body>
- html>
回车 enter
删除 delete(捕获“删除delete”和“退格backspace”键)
退出 esc
空格 space
换行 tab (特殊,必须配合keydown去使用,@keydown.tab)
上 up
下 down
左 left
右 right
Vue未提供别名的按键,可以使用按键原始的key值去绑定,但注意要转化为kebab-case(短横线命名,两个不同的单词之间用短横线连接)
系统修饰键(用法特殊):ctrl、alt、shift、meta(win键)
①配合keyup使用:按下修饰键的同时,再按下其他键,随后释放其他键,事件才被触发
②配合keydown使用:正常触发事件