根据 Vue 文档中关于事件处理的页面,当你像v-on:click="handler"
一样使用 v-on 时,处理程序函数将自动获取原始 DOM 事件作为第一个参数。此代码片段直接改编自这些文档。
new Vue({
// Vue config shortened for brevity
methods: {
handler(event) {
// `this` inside methods points to the Vue instance
alert('Hello ' + this.name + '!')
// `event` is the native DOM event
if (event) {
alert(event.target.tagName)
}
}
}
})
为什么即使我从函数参数列表中省略它,我仍然可以访问event
,如下所示:
handler() {
console.log(event); // Still returns the native DOM object even though
// I don't explicitly define `event` anywhere
}
如果我不将其作为参数添加到函数中,event
不应该undefined
吗?
这将是全局window.event
:
https://developer.mozilla.org/en-US/docs/Web/API/Window/event
与 Vue 无关,只是一个不幸的巧合,你碰巧称它为 event
.
也许文档解释了在处理程序函数中使用event
作为第一个参数的原因: You should avoid using this property in new code, and should instead use the Event passed into the event handler function.
https://developer.mozilla.org/en-US/docs/Web/API/Window/event