美文网首页
vue3 Event 事件处理

vue3 Event 事件处理

作者: 我就是看看哦 | 来源:发表于2020-08-27 13:59 被阅读0次

1、监听事件

我们可以使用指令v-on 或简写方式@来监听js事件触发。

<div id="basic-event">
  <button @click="counter += 1">Add 1</button>
  <p>The button above has been clicked {{ counter }} times.</p>
</div>
Vue.createApp({
  data() {
    return {
      counter: 1
    }
  }
}).mount('#basic-event')

2、事件监听方法

仅用方法名称可以返回event

<div id="event-with-method">
  <!-- `greet` is the name of a method defined below -->
  <button @click="greet">Greet</button>
</div>
Vue.createApp({
  data() {
    return {
      name: 'Vue.js'
    }
  },
  methods: {
    greet(event) {
      // `this` inside methods points to the current active instance
      alert('Hello ' + this.name + '!')
      // `event` is the native DOM event
      if (event) {
        alert(event.target.tagName)
      }
    }
  }
}).mount('#event-with-method')

方法传参数

<div id="inline-handler">
  <button @click="say('hi')">Say hi</button>
  <button @click="say('what')">Say what</button>
</div>
Vue.createApp({
  methods: {
    say(message) {
      alert(message)
    }
  }
}).mount('#inline-handler')

如果想传参同时需要处理event ,我们可以用$event

<button @click="warn('Form cannot be submitted yet.', $event)">
  Submit
</button>
methods: {
  warn(message, event) {
    // now we have access to the native event
    if (event) {
      event.preventDefault()
    }
    alert(message)
  }
}

绑定多个方法

<!-- both one() and two() will execute on button click -->
<button @click="one($event), two($event)">
  Submit
</button>
// ...
methods: {
  one(event) {
    // first handler logic...
  },
  two(event) {
    // second handler logic...
  }
}

3、事件修饰器

event.preventDefault()
event.stopPropagation()

.stop
.prevent
.capture
.self
.once
.passive
<!-- the click event's propagation will be stopped -->
<a @click.stop="doThis"></a>

<!-- the submit event will no longer reload the page -->
<form @submit.prevent="onSubmit"></form>

<!-- modifiers can be chained -->
<a @click.stop.prevent="doThat"></a>

<!-- just the modifier -->
<form @submit.prevent></form>

<!-- use capture mode when adding the event listener -->
<!-- i.e. an event targeting an inner element is handled here before being handled by that element -->
<div @click.capture="doThis">...</div>

<!-- only trigger handler if event.target is the element itself -->
<!-- i.e. not from a child element -->
<div @click.self="doThat">...</div>

注:使用修饰符时,顺序很重要,因为相关代码是按照相同的顺序生成的。因此使用@click.prevent。当@click.self时,self将阻止所有点击。prevent只会阻止对元素本身的单击。

<!-- the click event will be triggered at most once -->
<a @click.once="doThis"></a>

.passive 相当于addEventListener

<!-- the scroll event's default behavior (scrolling) will happen -->
<!-- immediately, instead of waiting for `onScroll` to complete  -->
<!-- in case it contains `event.preventDefault()`                -->
<div @scroll.passive="onScroll">...</div>

注:不要同时使用.passive和.prevent,因为.prevent会被忽略,你的浏览器可能会向你显示一个警告。请记住.passives是与浏览器通信,表示您不想阻止该事件的默认行为。

4、键盘事件

<!-- only call `vm.submit()` when the `key` is `Enter` -->
<input @keyup.enter="submit" />

<input @keyup.page-down="onPageDown" />
.enter
.tab
.delete (captures both "Delete" and "Backspace" keys)
.esc
.space
.up
.down
.left
.right
.ctrl
.alt
.shift
.meta
<!-- Alt + Enter -->
<input @keyup.alt.enter="clear" />

<!-- Ctrl + Click -->
<div @click.ctrl="doSomething">Do something</div>

.exact 修饰符允许你控制由精确的系统修饰符组合触发的事件

<!-- this will fire even if Alt or Shift is also pressed -->
<button @click.ctrl="onClick">A</button>

<!-- this will only fire when Ctrl and no other keys are pressed -->
<button @click.ctrl.exact="onCtrlClick">A</button>

<!-- this will only fire when no system modifiers are pressed -->
<button @click.exact="onClick">A</button>

鼠标修饰符

.left
.right
.middle

相关文章

  • vue3 Event 事件处理

    1、监听事件 我们可以使用指令v-on 或简写方式@来监听js事件触发。 2、事件监听方法 仅用方法名称可以返回e...

  • zabbixApi4j-Event

    Event: 此类设计用于处理事件。 event.get: 检索事件event.acknowledge: 确认事件...

  • android事件处理学习笔记

    基于监听的事件处理 监听处理模型: Event Sourse(事件源) Event(事件):用户的一次操作会封装在...

  • 事件对象

    事件对象 事件对象特点: 只有在事件处理程序执行期间,event对象才存在,一旦事件处理程序执行完成,event对...

  • c# 事件和EventManager

    事件 基本用法 关键字event,声明格式为: public event <委托类型> <事件对象> 事件的处理方...

  • jQuery相关方法总结 02

    事件 添加事件处理程序 on(enents [,selector] [,data],handler(event))...

  • 30.Vue事件修饰符

    在事件处理程序中调用 event.preventDefault() 或 event.stopPropagation...

  • Vue 事件修饰符

    在事件处理程序中调用event.preventDefault() 或 event.stopPropagation(...

  • (10)打鸡儿教你Vue.js

    事件处理器 event.preventDefault() 或 event.stopPropagation() 请点...

  • 07-事件修饰符

    在事件处理程序中调用 event.preventDefault() 或 event.stopPropagation...

网友评论

      本文标题:vue3 Event 事件处理

      本文链接:https://www.haomeiwen.com/subject/hnjnjktx.html