Vue学习篇(五)—事件监听

Vue Day 05——事件监听

概述

  • 基本使用
  • 参数传递
  • 修饰符

5.1. 事件监听基本使用

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

  • 这个时候,我们就必须监听用户发生的时间,比如点击、拖拽、键盘事件等等
  • 在Vue中如何监听事件呢?使用v-on指令

v-on介绍

  • 作用:绑定事件监听器
  • 缩写:@
  • 预期:Function | Inline Statement | Object
  • 参数:event

这里,我们用一个监听按钮的点击事件,来简单看看v-on的使用

  • 下面的代码中,我们使用了v-on:click="counter++”
  • 另外,我们可以将事件指向一个在methods中定义的函数

注:

  • v-on也有对应的语法糖:
  • v-on:click可以写成@click
<div id="app">
  <h2>{{counter}}</h2>
<!--  <button v-on:click="increment">+</button>-->
<!--  <button v-on:click="decrement">-</button>-->
  <button @click="increment">+</button>
  <button @click="decrement">-</button>
</div>

<script src="../js/vue.js"></script>
<script>
  const app = new Vue({
    el: '#app',
    data: {
     counter: 0
    },
    methods: {
      increment(){
        this.counter++;
      },
      decrement(){
        this.counter--;
      }
    }
  })
</script>

5.2. 参数问题

  • btnClick
  • btnClick(event)
  • btnClick(abc, event) -> $event

当通过methods中定义方法,以供@click调用时,需要注意参数问题:

  • 情况一:如果该方法不需要额外参数,那么方法后的()可以不添加。

    • 但是 注意:如果方法本身中有一个参数,那么会默认将原生事件event参数传递进去
  • 情况二:如果需要同时传入某个参数,同时需要event时,可以通过$event传入事件。

<div id="app">
  <h2>{{message}}</h2>
<!--  时间调用的方法没有参数-->
  <button @click="btnclick()">按钮1</button>
  <button @click="btnclick">按钮</button>
<!-- 本应该传参数,但是没有传参数,这会将浏览器默认生产的event对象作为参数传入到方法 -->
  <button @click="btn2click(123)">按钮2</button>
  <button @click="btn2click">按钮2</button>
<!--  在我们方法定义是,我们需要event对象 ,同时又需要其他参数-->
<!--  在调用单发时,如何手动获取到浏览器event对象,使用:$event-->
  <button @click="btn3click(abs, $event)">按钮3</button>
  <button @click="btn3click">按钮4</button>
</div>

<script src="../js/vue.js"></script>
<script>
  const app = new Vue({
    el: '#app',
    data: {
      message: '你好啊',
      abs: 123,
    },
    methods: {
      btnclick(){
        console.log("hddh");
      },
      btn2click(i){
        console.log("sss", i);
      },
      btn3click(i, event){
        console.log("sss", i, event);
      }
    }
  })
</script>

5.3. 修饰符

在某些情况下,我们拿到event的目的可能是进行一些事件处理。
Vue提供了修饰符来帮助我们方便的处理一些事件:

  • stop —— 调用 event.stopPropagation()。
  • prevent ——调用 event.preventDefault()
  • .{keyCode | keyAlias} -——只当事件是从特定键触发时才触发回调。
  • .enter——点击enter建一次,触发一次
  • .once ——只触发一次回调。
  • .native —— 监听组件根元素的原生事件。
<div id="app">

<!--  v-on修饰符-->
<!--  点击按钮会执行两个方法,我们需要点击按钮只执行按钮的方法,点击整个div才会执行div的方法,这个时候使用修饰符.stop解决-->

  <div @click="divclick">
    2333aaaaa
    <button @click.stop="btn4click">按钮1</button>
  </div>
<!--  .prevent使用,,阻止自动提交-->
  <form action="baidu">
    <input type="submit" value="提交" @click.prevent="btn5click">
  </form>
<!--  监听某个按键的键位,.enter 使用户点击enter建一次,出发一次函数-->
  <input type="text" v-on:keyup.enter="keyclick">

<!--  .native自定义组件-->
<!--  <cpn @click.native="btnclick">ss</cpn>-->

<!--  .once,使用户在敲击第一次按钮时才会有反应,后面敲击不会缠上反应-->
  <button @click.once="btn4click">按钮2</button>
  <button></button>
  <button></button>
  <button></button>
  <button></button>
</div>

<script src="../js/vue.js"></script>
<script>
  const app = new Vue({
    el: '#app',
    data: {
      message: '你好啊',
      abs: 123,
    },
    methods: {
      btnclick(){
        console.log("hddh");
      },
      btn4click(){
        console.log('btnclick');
      },
      divclick(){
        console.log('divclick');
      },
      btn5click() {
        console.log('sssss');
      },
      keyclick() {
        console.log('sshughdd');
      }
    }
  })
</script>
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值