之前关于vue事件修饰符和按键修饰符的一点分析,最近需要回顾,就顺便发到随笔上了
在事件处理程序中调用 event.preventDefault() 或 event.stopPropagation() 是非常常见的需求。尽管我们可以在 methods 中轻松实现这点,但更好的方式是:methods 只有纯粹的数据逻辑,而不是去处理 DOM 事件细节。
为了解决这个问题, Vue.js 为 v-on 提供了 事件修饰符。通过由点(.)表示的指令后缀来调用修饰符。
.prevent .capture .self .once
<div @click='doThis' style="width:100px;height: 100px; background: red;"> 点击父元素 <a v-on:click.stop="doThis">点击子元素 </a> </div>
当点击父元素的时候,执行doThis,当点击子元素a的时候,这个点击动作不单单触发了a标签,同时也触发了div标签,这就是事件冒泡,所以假设上述例子中a标签为v-on:click='doThis',则doThis会被执行两次,父元素和子元素都执行了一次click事件,而.stop则是阻止事件冒泡,再次点击a标签,click事件只会执行一次
按键修饰符
在监听键盘事件时,我们经常需要监测常见的键值。 Vue 允许为 v-on 在监听键盘事件时添加按键修饰符:
<input v-on:keyup.13="submit">
记住所有的 keyCode 比较困难,所以 Vue 为最常用的按键提供了别名:
<input v-on:keyup.enter="submit"> <input @keyup.enter="submit">
全部的按键别名:
.enter .tab .delete (捕获 “删除” 和 “退格” 键) .esc .space .up .down .left .right
可以通过全局 config.keyCodes 对象自定义按键修饰符别名:
// 可以使用 v-on:keyup.f1 Vue.config.keyCodes.f1 = 112
按键修饰符
2.1.0 新增
可以用如下修饰符开启鼠标或键盘事件监听,使在按键按下时发生响应。
.ctrl .alt .shift .meta
注意:在Mac系统键盘上,meta对应命令键 (⌘)。在Windows系统键盘meta对应windows徽标键(⊞)。在Sun操作系统键盘上,meta对应实心宝石键 (◆)。在其他特定键盘上,尤其在MIT和Lisp键盘及其后续,比如Knight键盘,space-cadet键盘,meta被标记为“META”。在Symbolics键盘上,meta被标记为“META” 或者 “Meta”。
例如:
Alt + C
<input @keyup.alt.67="clear">
Ctrl + Click
<div @click.ctrl="doSomething">Do something</div>