Vue 事件监听v-on(简单使用,参数问题,修饰符)

38 篇文章 1 订阅
23 篇文章 4 订阅
简述

在前端开发中,我们需要经常和用户交互

  • 这个时候,我们就必须监听用户发生的事件,比如点击,拖拽,键盘事件等等
  • 在Vue中使用v-on监听事件
v-on介绍
  • 作用:绑定事件监听器
  • 缩写:@
  • 预期:Function | Inline Statement | Object
  • 参数:event
简单使用
/*这里,我们用一个监听按钮的点击事件,来简单看看v-on的使用*/
<div id="app">
  <h2>当前计数器为:{{counter}}</h2>
    
  下面的代码中,我们使用了v-on:click="counter++”
  <button v-on:click="counter++">+</button>
  <button v-on:click="counter--">-</button>
    
  另外,我们可以将事件指向一个在methods中定义的函数
  <button v-on:click="increment">+</button>
  <button v-on:click="decrement">-</button>
    
   v-on也有对应的语法糖:@click
  <button @click="increment">+</button>
  <button @click="decrement">-</button>
</div>
<script>
  const app = new Vue({
    el:"#app",
    data:{
      counter:0
    },
    methods:{
      increment(){
        this.counter++
      },
      decrement(){
        this.counter--
      }
    }
  })
</script>
关于参数问题
  • 当通过methods中定义方法,以供@click调用时,需要注意参数问题:
  • 情况一:如果该方法不需要额外参数,那么方法后的()可以不添加
    • 但是注意:如果方法体本身中有一个参数,但调用时没有传参,默认将原生事件event参数传递进去
  • 情况二:如果需要同时传入某个参数,同时需要event时,可以通过$event传入事件。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kc2HA9Ss-1616429691640)(v-on 事件监听.assets/image-20210323000256547.png)]

小案例
<!--  事件调用的方法没有参数-->
  <button  @click="btn1Click()">按钮1-1</button>
  <button @click="btn1Click">按钮1-2</button>
<!--  在事件定义时,写函数省略了小括号,凡是方法本身是需要小括号的-->
<!--  这个时候,Vue会默认将浏览器生产的event事件对象作为参数传入到方法-->
  <button @click="btn2Click">按钮2-1</button>
<!--  如果函数需要参数,但是没有传入,如果有括号的话,那么函数的形参为underfined-->
 <button   @click="btn2Click()">按钮2-2</button>
 <button  @click="btn2Click(123)">按钮2-3</button>
<!--  定义方法时,我们需要event对象,同时又需要其他参数-->
<!--  在调用方式,如何手动的获取到浏览器参数的event对象:  $event-->
<button  @click="btn3Click(123,$event)">按钮3</button>

    methods:{
      btn1Click(){
        console.log("btn1Click");
      },
      btn2Click(event){
        console.log("------------------",event);
      },
      btn3Click(abc,event){
        console.log("++++++++++++++++++",abc, event);
      }
    }
修饰符
  • 在某些情况下,我们拿到event的目的可能是进行一些事件处理。
  • Vue提供了修饰符来帮助我们方便的处理一些事件:
    • .stop - 调用 event.stopPropagation()。防止冒泡
    • .prevent - 调用 event.preventDefault()。防止默认行为
    • .{keyCode | keyAlias} - 只当事件是从特定键触发时才触发回调。
    • .native - 监听组件根元素的原生事件。
    • .once - 只触发一次回调。
简单使用案例

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZxR6l3d0-1616429691643)(v-on 事件监听.assets/image-20210323001356884.png)]

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

°PJ想做前端攻城狮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值