最佳答案
点击事件已经使用ENTER键触发(在某些浏览器中也会触发Space,例如Chrome for desktop).所以,你的代码只需要一个@ click =“callEvent”,一切都运行正常,因为焦点已经在按钮上:
var app = new Vue({
el: "#app",methods: {
callEvent() {
console.log("Event called");
}
}
});
如果你想要任何ENTER触发按钮,即使它没有焦点,你应该将事件绑定到窗口对象,这可以在挂载的处理程序中进行:
var app = new Vue({
el: "#app",methods: {
callEvent() {
console.log("Event called");
}
},mounted() {
window.addEventListener('keyup',function(event) {
if (event.keyCode === 13) {
app.callEvent();
}
});
}
});
请记住,如果您使用的是单个文件组件,则此关键字会公开该实例,该关键字可用于调用所需处理程序中的组件方法:
export default {
methods: {
callEvent() {
console.log('Event called')
}
},event => {
if (event.keyCode === 13) {
this.callEvent()
}
})
}
}