1. 按键修饰符
Vue.js 中的按键修饰符使得键盘事件处理变得十分简单,它们通常与 v-on
指令(或简写为 @
)一起用来监听键盘事件。
Vue允许为v-on在监听键盘事件时添加按键修饰符。
示例:
<!-- 只有在 keyCode 是 13 时调用 vm.submit() -->
<input v-on:keyup.13="submit">
<!-- 利用下面的写法有同样的效果 -->
<input v-on:keyup.enter="submit">
示例:响应enter键事件
<input type="text" @keyup.13="doSubmit" v-model="name">
var vm = new Vue({
el: "#app",
data: function() {
return {
name: 'hello vue'
}
},
methods: {
doSubmit: function() {
alert("响应enter," + this.name);
}
}
});
下面是一些Vue.js中的按键修饰符及其使用方法的详尽介绍:
2. 实现原理
按键修饰符背后的思想非常简单:在监听键盘事件时,你可能只对某些特定的按键感兴趣,Vue.js 提供的按键修饰符可以让你直接在模板中指定这些特定的按键,从而无需在方法里编写任何额外的逻辑来检查按键代码。
3. 使用方法
按键修饰符直接跟在事件名称后面,由点 (.) 分隔。例如,如果你想要在用户按下 Enter 键时调用一个方法,你可以这样写:
<input v-on:keyup.enter="yourMethod">
或者使用简写形式:
<input @keyup.enter="yourMethod">
4. 常用的按键修饰符
按键别名 | 含义 |
---|---|
.enter | 回车确认键 |
.tab | TAB键 |
.delete | 捕获 “删除” 和 “退格” 键 |
.esc | 键盘左上角的Esc键,取消键 |
.space | 空格键 |
.up | 上 |
.down | 下 |
.left | 左 |
.right | 右 |
除了这些常用按键之外,你还可以使用任何有效的按键名称,来作为按键修饰符。
5. 自定义按键修饰符
Vue 允许你向 config.keyCodes
对象添加自定义按键修饰符别名:
// 允许 v-on:keyup.f1
Vue.config.keyCodes.f1 = 112;
这样你就可以使用自定义的按键修饰符别名在模板中绑定事件了。
6. 系统修饰键
Vue.js 还允许使用以下几个用于检测常用系统按键的修饰符:
按键别名 | 含义 |
---|---|
.ctrl | ctrl键 |
.alt | alt键 |
.shift | shift键 |
.meta | 在 Mac 键盘上是 Command 键,在 Windows 键盘上是 Windows 键 |
这些事件修饰符还可以与普通的按键修饰符结合使用。例如:
<!-- Alt + C -->
<input @keyup.alt.67="clear">
<!-- Ctrl + Click -->
<button @click.ctrl="doSomething">Do something</button>
7. 事件修饰符的链式使用
你可以链式地使用多个事件修饰符:
<!-- Ctrl + Shift + Enter -->
<input @keyup.ctrl.shift.enter="onEnter">
8. .exact 修饰符
.exact
修饰符允许你控制其他系统修饰键确切的组合。它可以确保只有当全部正确的修饰键被按下时,才会触发事件处理函数:
<!-- 这将只会在没有任何其他键(如 Shift, Alt 或 Control)被按下的情况下,响应 Ctrl -->
<button @click.ctrl.exact="onControlClick">A</button>
<!-- 这将只会在没有按下任何修饰键的情况下触发 -->
<button @click.exact="onClick">B</button>
通过使用Vue的按键修饰符,你可以极大地减少处理键盘事件时的 js 代码量,并使你的方法更加专注于它们实际上需要做的事情,而不是处理不相关的按键。