所以我正在Vue.js中使用EventBus将数据从一种方法发送到另一种方法。我有两种方法,例如one()
和two()
。我正在使用EventBus,如下所示:
one() {
EventBus.$emit("this:that", data);
}
然后我在其他方法中有这样的东西
two() {
EventBus.$on('this:that', data => {
window.open(data.link, '_blank');
});
}
当我第一次调用方法one()
时,它会打开一个新选项卡,但是,如果我第二次调用它,则它将打开同一标签的两倍;如果我第三次调用它,则它将打开三次。相同的标签,依此类推,直到我刷新页面并再次调用它,然后它只会打开一个标签。我尝试使用EventBus.$once
,但是它根本没有打开标签页。
在刷新页面之前,无论调用该方法多少次,我怎么都只能打开一个选项卡。也就是说,我叫了三遍,对于这三遍,它每次只会生成一个新标签,而不是一个,然后是两个,然后是三个标签。
任何帮助将不胜感激
答案 0 :(得分:1)
我猜您不会致电EventBus.$off("this:that")
来注销您的eventBus。因此它将被越来越多地射击。
答案 1 :(得分:0)
总是有如下习惯从正在监听事件的事件总线中删除事件监听器。
beforeDestroy(){
EventBus.$off('event-bus-name')
}