Vue(七)——事件处理
前情提要:
v-on——监听DOM事件,在触发时运行js代码- 在内联语句处理器中访问
原始的 DOM 事件。可以用特殊变量$event把它传入方法
示例:
var example2 = new Vue({
el: '#example-2',
data: {
name: 'Vue.js'
},
// 在 `methods` 对象中定义方法
methods: {
greet: function (event) {
// `this` 在方法里指向当前 Vue 实例
alert('Hello ' + this.name + '!')
// `event` 是原生 DOM 事件
if (event) {
alert(event.target.tagName)
}
}
}
})
// 也可以用 JavaScript 直接调用方法
example2.greet() // => 'Hello Vue.js!'
v-on 缩写
...
...
...
自定义响应函数
除了直接绑定到一个方法,也可以在内联 JavaScript 语句中调用方法:
new Vue({
el: '#example-3',
methods: {
say: function (message) {
alert(message)
}
}
})
事件修饰符
方法只有纯粹的数据逻辑,而不是去处理 DOM 事件细节。
为了解决这个问题,Vue.js为 v-on 提供了事件修饰符
.stop.prevent.capture.self.once.passive
...
...
...
按键修饰符
监听键盘事件
keyup的输入,比如enter、page-down等
你可以直接将 KeyboardEvent.key 暴露的任意有效按键名转换为 kebab-case 来作为修饰符。
在上述示例中,处理函数只会在 $event.key 等于 PageDown 时被调用。
常用按键修饰符(用来替换按键码):
.enter.tab.delete(捕获“删除”和“退格”键).esc.space.up.down.left.right
v-on好处
- 扫一眼 HTML 模板便能轻松定位在 JavaScript 代码里对应的方法。
- 因为你无须在 JavaScript 里手动绑定事件,你的 ViewModel 代码可以是非常纯粹的逻辑,和 DOM 完全解耦,更易于测试。
- 当一个 ViewModel 被销毁时,所有的事件处理器都会自动被删除。你无须担心如何清理它们。