首页 > 其他分享 >事件处理

事件处理

时间:2023-04-23 10:47:42浏览次数:32  
标签:事件处理 DOM 修饰符 处理器 内联 event 事件

监听事件

用v-on指令或简写@来监听DOM事件,并在事件触发时执行对应的JS

v-on:click="handler" 或 @click="handler"

这里的handler事件处理器的值可以是:

1.内联事件处理器:事件被触发时执行的内联JS语句(与onclick类似)

data() {
  return {
    count: 0
  }
}

<button @click="count++">Add 1</button>
<p>Count is: {{ count }}</p>

2.方法事件处理器:一个指向组件上定义的方法的属性名或是路径

data() {
  return {
    name: 'Vue.js'
  }
},
methods: {
  greet(event) {
    // 方法中的 `this` 指向当前活跃的组件实例
    alert(`Hello ${this.name}!`)
    // `event` 是 DOM 原生事件
    if (event) {
      alert(event.target.tagName)
    }
  }
}

<!-- `greet` 是上面定义过的方法名 -->
<button @click="greet">Greet</button>

方法事件处理器会自动接收原生DOM事件并触发执行,可以通过被触发事件的event.target.tagName访问到该DOM元素

在内联事件处理器中调用方法

即除了直接绑定方法名,也可以在内联处理器调用方法,这是可以向方法中传入自定义参数代替原生事件

methods: {
  say(message) {
    alert(message)
  }
}

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

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

有时候需要在内联事件处理器中访问原生DOM事件,这时可以通过如下两种方式实现:

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

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

methods: {
  warn(message, event) {
    // 这里可以访问 DOM 原生事件
    if (event) {
      event.preventDefault()
    }
    alert(message)
  }
}

事件修饰符

在处理事件时调用event.preventDefault()或event.stopPropagation()是比较常见的,

我们当然可以直接在方法内调用,但为使方法更专注于处理数据逻辑,

Vue为v-on提供了事件修饰符即用.打头的指令后缀,如下:

<!-- 单击事件将停止传递 -->
<a @click.stop="doThis"></a>

<!-- 提交事件将不再重新加载页面 -->
<form @submit.prevent="onSubmit"></form>

<!-- 修饰语可以使用链式书写 -->
<a @click.stop.prevent="doThat"></a>

<!-- 也可以只有修饰符 -->
<form @submit.prevent></form>

<!-- 仅当 event.target 是元素本身时才会触发事件处理器 -->
<!-- 例如:事件处理器不来自子元素 -->
<div @click.self="doThat">...</div>

tips:使用修饰符时注意调用顺序,如:

@click.prevent.self会组织元素及其子元素的所有事件的默认行为

@click.self.prevent只会阻止对元素本身的点击事件的默认行为

.capture / .once / .passive 修饰符与原生addEventListener事件相对应

<!-- 添加事件监听器时,使用 `capture` 捕获模式 -->
<!-- 例如:指向内部元素的事件,在被内部元素处理前,先被外部处理 -->
<div @click.capture="doThis">...</div>

<!-- 点击事件最多被触发一次 -->
<a @click.once="doThis"></a>

<!-- 滚动事件的默认行为 (scrolling) 将立即发生而非等待 `onScroll` 完成 -->
<!-- 以防其中包含 `event.preventDefault()` -->
<div @scroll.passive="onScroll">...</div>

 

按键修饰符

<!-- 仅在 `key` 为 `Enter` 时调用 `submit` -->
<input @keyup.enter="submit" />

可以直接使用KeyboardEvent.key暴露的按键名作为修饰符,但需要转化为kebab-case形式(短横线)

<input @keyup.page-down="onPageDown" />

上例只有在$event.key为 'PageDown'时才调用事件处理

键盘事件:

keydown:键盘按下后触发

keyup:键盘按下抬起后触发

 

标签:事件处理,DOM,修饰符,处理器,内联,event,事件
From: https://www.cnblogs.com/zmhz/p/17345775.html

相关文章

  • java事件处理机制
     事件源可以是一个键可以是一个鼠标可以是一个按钮.....发生了就是事件源事件就是事件的对象,当事件源发生了就会有事件对象(事件对象就会传递给事件监听者)事件监听者接受刀事件对象了之后会进行事件处理方法   ......
  • 第十四篇 事件 - 事件流、事件处理程序、事件委托(代理)
    bycaixin深圳事件JavaScript与HTML之间的交互通过事件实现事件就是用户或浏览器自身执行的某种动作,比如点击、加载,鼠标移入移出等等可以使用侦听器来预订事件事件流DOM(文档对象模型)结构是一个树形结构,当一个HTML元素产生一个事件时,该事件会在元素结点与根......
  • 第十篇 vue - 基础 -事件处理
    监听事件我们可以使用v-on指令(简写为@)来监听DOM事件,并在事件触发时执行对应的JavaScript。用法:v-on:click="methodName"或@click="handler"事件处理器的值可......
  • 事件处理
    事件的基本使用使用v-on:xxx或者@xxx绑定事件,其中xxx是事件名事件的回调需要配置在methods对象中,最终会在vm里面methods中配置的函数,不要用箭头函数,否则使用this指的......
  • Vue.js 事件处理-事件修饰符
    视频<!DOCTYPEhtml><html> <head> <metacharset="UTF-8"/> <title>事件修饰符</title> <!--引入Vue--> <scripttype="text/javascript"src="../js/vue.j......
  • Vue.js 事件处理-事件的基本使用v-on传参
    视频<!DOCTYPEhtml><html> <head> <metacharset="UTF-8"/> <title>事件的基本使用</title> <!--引入Vue--> <scripttype="text/javascript"src="../js/v......
  • 04、复杂事件处理(CEP)简介
    复合事件架构是由史丹佛大学的DavidLuckham与BrianFraseca所提出,使用模式比对、事件的相互关系、事件间的聚合关系,目的从事件云(eventcloud)中找出有意义的事件,使得IT架构......
  • 05、复杂事件处理(CEP)引擎简介
    目前已有的CEP引擎根据事件处理语言可以分为两大类:面向流和面向规则的CEP引擎。面向流的CEP引擎有MicrosoftStreamlnsight、OracleCEP、IBMSPADE、Esper等。而面向规则......
  • 事件处理
    监听事件#我们可以使用 v-on 指令(简写为 @)来监听DOM事件,并在事件触发时执行对应的JavaScript。用法:v-on:click="methodName" 或 @click="handler"。事件处理......
  • 事件处理
     1.鼠标事件例子:(move方法是为了移动窗口)默认情况下,只有在按下鼠标按钮(不释放)时移动鼠标,才会产生鼠标移动事件,否则不会产生鼠标移动事件。event->x()是相对于窗......