Vue.js允许我们通过在元素上使用v-on指令来拦截任何DOM事件。本主题是使组件具有交互性的关键
什么是Vue.js事件
Vue.js允许我们通过使用v-on
元素上的指令。
如果我们想在此元素中发生点击事件时做一些事情:
<template>
<a>Click me!</a>
</template>
我们添加一个v-on
指示:
<template>
<a v-on:click="handleClick">Click me!</a>
</template>
Vue还为此提供了一种非常方便的替代语法:
<template>
<a @click="handleClick">Click me!</a>
</template>
您可以选择是否使用括号。@click="handleClick"
相当于@click="handleClick()"
。
handleClick
是附加到组件的方法:
<script>
export default {
methods: {
handleClick: function(event) {
console.log(event)
}
}
}
</script>
方法在我的文章中有更详细的解释Vue方法教程。
您需要在这里知道的是,您可以通过事件传递参数:@click="handleClick(param)"
并且它们将在方法内部被接收。
访问原始事件对象
在许多情况下,您将需要对事件对象执行操作或在其中查找某些属性。您如何访问它?
使用特殊$event
指示:
<template>
<a @click="handleClick($event)">Click me!</a>
</template>
<script>
export default {
methods: {
handleClick: function(event) {
console.log(event)
}
}
}
</script>
并且如果您已经传递了一个变量:
<template>
<a @click="handleClick('something', $event)">Click me!</a>
</template>
<script>
export default {
methods: {
handleClick: function(text, event) {
console.log(text)
console.log(event)
}
}
}
</script>
从那里你可以打电话event.preventDefault()
,但是有更好的方法:事件修饰符
事件修饰符
告诉Vue为您处理事情,而不要弄乱方法中的DOM“事物”:
@click.prevent
称呼event.preventDefault()
@click.stop
称呼event.stopPropagation()
@click.passive
利用addEventListener的被动选项@click.capture
使用事件捕获而不是事件冒泡@click.self
确保click事件没有从子事件中冒出,而是直接发生在该元素上@click.once
该事件只会被触发一次
所有这些选项可以通过在另一个后面附加修饰符来组合。
有关传播,冒泡/捕捉的更多信息,请参阅我的JavaScript事件指南。
免费下载我的Vue手册
更多vue教程:
- Vue.js概述
- Vue.js CLI:学习如何使用它
- Vue.js开发工具
- 为Vue开发配置VS代码
- 使用Vue.js创建您的第一个应用
- Vue.js单个文件组件
- Vue.js模板和插值
- Vue.js指令
- Vue.js方法
- Vue.js计算属性
- 使用CSS样式化Vue.js组件
- Vue.js观察者
- Vue方法vs观察者vs计算的属性
- Vue.js过滤器
- Vue.js组件
- Vue.js插槽
- Vue.js组件道具
- Vue.js活动
- Vue.js组件通信
- Vuex,Vue.js状态管理器
- Vue,在另一个组件内部使用一个组件
- Vue,如何使用prop作为类名
- 如何将SCSS与Vue.js单个文件组件一起使用
- 在Vue.js中使用Tailwind
- Vue路由器
- 动态显示Vue组件
- Vue.js备忘单
- 使用Vuex将Vue数据存储到localStorage
- 如何使用Vue动态应用类
- Vue,如何使用v模型
- Vue,为什么数据必须是函数
- Roadmap to become a Vue.js developer in 2020