VueJS 事件处理
-
为什么在 HTML 中监听事件
你可能注意到这种事件监听的方式违背了关注点分离(separation of concern)传统理念。不必担心,因为所有的 Vue.js 事件处理方法和表达式都严格绑定在当前视图的 ViewModel 上,它不会导致任何维护上的困难。实际上,使用 v-on 有几个好处:- 扫一眼 HTML 模板便能轻松定位在 JavaScript 代码里对应的方法。
- 因为你无须在 JavaScript 里手动绑定事件,你的 ViewModel 代码可以是非常纯粹的逻辑,和 DOM 完全解耦,更易于测试。
- 当一个 ViewModel 被销毁时,所有的事件处理器都会自动被删除。你无须担心如何自己清理它们。
-
-
如何监听 DOM 事件
在事件处理程序中调用 event.preventDefault() 或 event.stopPropagation() 是非常常见的需求。 尽管我们可以轻松地在方法内部执行此操作,但最好是这些方法可以纯粹与数据逻辑有关,而不是必须处理 DOM 事件详细信息。为了解决此问题,Vue 为 v-on 提供了事件修饰符。 回想一下修饰符是用点表示的指令后缀。- .stop
- .prevent
- .capture
- .self
- .once
- .passive
使用修饰符时顺序很重要,因为相关代码以相同顺序生成。 因此,使用 v-on:click.prevent.self 将阻止所有单击,而 v-on:click.self.prevent 将仅防止单击元素本身。
.once 与其他修饰符(本机DOM事件专用)不同,.once 修饰符还可以用于组件事件。Vue 还提供了 .passive 修饰符,与 addEventListener 的被动选项相对应。.passive 修饰符对于提高移动设备的性能特别有用。请勿同时使用 .passive 和 .prevent,因为 .prevent 将被忽略,并且您的浏览器可能会向您显示警告。 请记住,.passive 会与您的浏览器进行通信,您不想阻止该事件的默认行为。
-
按键修饰符
当需要旧版浏览器支持时,Vue 为最常用的键代码提供别名:- .enter
- .tab
- .delete (捕获 "删除" 和 "退格" 键)
- .esc
- .space
- .up
- .down
- .ctrl (2.1.0+版本新增)
- .alt (2.1.0+版本新增)
- .shift (2.1.0+版本新增)
- .meta (2.1.0+版本新增)
- .left (2.2.0+版本新增)
- .right (2.2.0+版本新增)
- .middle (2.2.0+版本新增)
- .exact (2.5.0+版本新增)
示例: