提示:该文章为笔者的个人笔记并不是权威,如有错误,谢谢指出。
一、事件处理
可以用v-on指令监听 DOM 事件,并在触发时运行一些 JavaScript 代码。
<div id="root">
<button v-on:click="news">点击显示信息</button>
</div>
<script>
let vm = new Vue({
el: "#root",
data: {},
methods: {
news(){
alert("信息");
}
}
})
</script>
除了直接绑定一个方法,也可以传递参数,如event。
<div id="root">
<button v-on:click="warn('hello world', $event)">点击</button>
</div>
<script>
let vm = new Vue({
el: "#root",
data: {},
methods: {
warn(message, event){
alert("message");
}
}
})
</script>
二、事件修饰符
<!-- 阻止单击事件继续传播 -->
<a v-on:click.stop="doThis"></a>
<!-- 提交事件不再重载页面 -->
<form v-on:submit.prevent="onSubmit"></form>
<!-- 修饰符可以串联 -->
<a v-on:click.stop.prevent="doThat"></a>
<!-- 只有修饰符 -->
<form v-on:submit.prevent></form>
<!-- 添加事件监听器时使用事件捕获模式 -->
<!-- 即内部元素触发的事件先在此处理,然后才交由内部元素进行处理 -->
<div v-on:click.capture="doThis">...</div>
<!-- 只当在 event.target 是当前元素自身时触发处理函数 -->
<!-- 即事件不是从内部元素触发的 -->
<div v-on:click.self="doThat">...</div>
三、按键修饰符
注意:keyCode事件用法已经被废弃了并可能不会被最新浏览器支持。
1. Vue中提供的按键码别名
-
回车 => enter
-
删除 => delete
-
退出 => esc
-
空格 => space
-
换行 => tab (特殊,必须配合keydown使用)
-
上 => up
-
下 => down
-
左 => left
-
右 => right
2.可以用如下修饰符来实现仅在按下相应按键时才触发鼠标或键盘事件的监听器。
- crtl
- meta
- shift
- alt
3.通过全局config.keyCodes自定义按键修饰符别名
Vue.config.keyCode.自定义键名 = 键码
总结
(1) methods中的配置函数也不要用箭头函数。
(2) 使用v-on:xxx 或 @xxx 绑定事件,xxx是事件名。
(3)
1. pervent 阻止默认事件
2. stop 阻止事件冒泡
3. once 事件只触发一次
4. capture 使用事件捕获方式
5. self 只有event.target是当前操作元素才触发事件
6. passive 事件的默认行为立即执行,无需等待事件回调执行完毕