【卷起来】VUE3.0教程-03-事件监听

🌲 事件监听

我们可以使用 v-on 指令 (简写为 @) 来监听 DOM 事件,并在事件触发时执行对应的 JavaScript。用法:v-on:click="handler" 或 @click="handler"。

事件处理器 (handler) 的值可以是:

  1. 内联事件处理器:事件被触发时执行的内联 JavaScript 语句 (与 onclick 类似)。
  2. 方法事件处理器:一个指向组件上定义的方法的属性名或是路径。

🌾 内联事件处理器

内联事件处理器通常用于简单场景,例如:


<template>
  <h2 style="color:red;font-weight: bold;">你当前调戏了我{{ count }}次</h2>
  <button @click="count++">点击调戏她吧</button>
</template>

<script setup>
  import {ref} from 'vue'

  const count = ref(1)
</script>

🌾 方法事件处理

随着事件处理器的逻辑变得愈发复杂,内联代码方式变得不够灵活。因此 v-on 也可以接受一个方法名或对某个方法的调用。

举例来说:


<template>
  <button @click="greet">来吧,展示</button>
</template>

<script setup>
  import {ref} from 'vue'
  const name = ref('Vue.js')

  function greet(event) {
    alert(`Hello ${name.value}!`)
    // `event` 是 DOM 原生事件
    if (event) {
      alert(event.target.tagName)
    }
  }
</script>

方法事件处理器会自动接收原生 DOM 事件并触发执行。在上面的例子中,我们能够通过被触发事件的 event.target.tagName 访问到该 DOM 元素。

🌾 在内联处理器中调用方法

除了直接绑定方法名,你还可以在内联事件处理器中调用方法。这允许我们向方法传入自定义参数以代替原生事件:


<template>
  <button @click="say('hello')">Say hello</button>
  <button @click="say('bye')">Say bye</button>
</template>

<script setup>

function say(message) {
  alert(message)
}
</script>

🌾 在内联事件处理器中访问事件参数

有时我们需要在内联事件处理器中访问原生 DOM 事件。你可以向该处理器方法传入一个特殊的 $event 变量,或者使用内联箭头函数:


<template>
    <!-- 使用特殊的 $event 变量 -->
  <button @click="warn('Form cannot be submitted yet.', $event)">
    Submit
  </button>

  <!-- 使用内联箭头函数 -->
  <button @click="(event) => warn('Form cannot be submitted yet.', event)">
    Submit
  </button>
</template>

<script setup>

function warn(message, event) {
  // 这里可以访问原生事件
  if (event) {
    console.log(event)
    //preventDefault() 方法阻止元素发生默认的行为(例如,当点击提交按钮时阻止对表单的提交)。
    event.preventDefault();
    
  }
  alert(message)
}
</script>

🌾 按键修饰符

在监听键盘事件时,我们经常需要检查特定的按键。Vue 允许在 v-on 或 @ 监听按键事件时添加按键修饰符。


<template>

  <form method="post" action="/show">

    <!-- 仅在 `key` 为 `Enter` 时调用 `submit` -->
  <input @keyup.enter="submit" value="提交表单" />
  </form>
  
</template>

<script setup>

</script>

你可以直接使用 KeyboardEvent.key 暴露的按键名称作为修饰符,但需要转为 kebab-case 形式。

🌾 按键别名

Vue 为一些常用的按键提供了别名:

  • .enter
  • .tab
  • .delete (捕获“Delete”和“Backspace”两个按键)
  • .esc
  • .space
  • .up
  • .down
  • .left
  • .right

<template>


    <!-- 仅在 `key` 为 `space` 时调用 `submit` -->
  <input @keyup.space="show($event)" value="提交表单" />
  
</template>

<script setup>
  function show(event){

    alert("O(∩_∩)O哈哈")
  }

</script>

🌾 系统按键修饰符

你可以使用以下系统按键修饰符来触发鼠标或键盘事件监听器,只有当按键被按下时才会触发。

  • .ctrl
  • .alt
  • .shift
  • .meta (home键)

<template>
<!-- Alt + Enter -->
<input @keyup.alt.enter="show" />

<!-- Ctrl + 点击 -->
<div @click.ctrl="show">Do something</div>
  
</template>

<script setup>
  function show(){

    alert("O(∩_∩)O哈哈")
  }

</script>

🌾 鼠标按键修饰符

  • .left
  • .right

这些修饰符将处理程序限定为由特定鼠标按键触发的事件。


<template>
  <input @click.right="show" />
  
  <div @click.left="show">Do something</div>
  
</template>

<script setup>
  function show(){

    alert("O(∩_∩)O哈哈")
  }

</script>

----------------------------------------------------------------------

分享不易,耗时耗力,喜欢的同学给个关注和赞吧

承接毕设指导,技术答疑,学习路上想要找私人教练的同学可以私信我

更多学习资料,公众号:墨轩学习网,B站:墨轩大楼

----------------------------------------------------------------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

听潮阁

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

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

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

打赏作者

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

抵扣说明:

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

余额充值