我向我的文档中添加了一个事件监听器,如下所示:
deleteTask(event){
// myFunc
}
created() {
document.addEventListener("keypress", this.deleteTask);
},
这发生在我的 Home.vue 组件中。 现在,我想在我的 Card.vue 组件中删除此事件侦听器。 像这样:
document.removeEventListener("keypress", this.deleteTask);
这显然不起作用,因为 this.deleteTask 在Card.vue组件中未知。但是我需要deleteTask函数来保留在Home.vue中,因为它在那里的某些数组上运行。所以我的问题是: 最好的方法是什么?
答案 0 :(得分:0)
不要使其全局化,而应使其仅在您的组件中侦听:
<template>
<div @keypress="deleteTask">
...
</div>
</template>
答案 1 :(得分:0)
您可以创建一个EventBus。
使用以下命令创建一个新的js
文件:
import Vue from 'vue';
export const EventBus = new Vue();
现在,您可以在 Home.vue 中收听事件:
created() {
...
EventBus.$on('removeListener', () => { document.removeEventListener("keypress", this.deleteTask); })
}
然后将使用removeListener
EventBus.$emit('removeListener')