【发布时间】:2019-09-08 05:25:59
【问题描述】:
我有三个页面 home, about & details 并且我在每个页面的 Vue mounted 生命周期钩子上添加了一个 keydown 事件监听器,所以每当用户点击 ctrl + rightArrow 我触发 nextPage() 方法,它将推送vue 路由器的下一页,同样ctrl + leftArrow 应该触发prevPage()。我在nextPage() & prevPage() 中使用不同的路由在每个页面上实现相同的功能。这里的问题是,即使我没有在某些页面上添加keydown 侦听器,事件也会触发并从先前加载的事件侦听器导航到路由,并且之前的侦听器也多次触发。
export default {
mounted() {
window.addEventListener('keydown', this.handleKeyPress);
},
methods: {
handleKeyPress(e) {
if (e.ctrlKey && e.keyCode === 37) { // Previous page
this.prevPage();
} else if (e.ctrlKey && e.keyCode === 39) { // Next page
this.nextPage();
}
},
nextPage() {
this.$router.push({ name: 'about' });
},
prevPage() {
this.$router.push({ name: 'home' });
}
}
}
【问题讨论】:
标签: vue.js vue-component keyboard-shortcuts vue-router keydown