EventBus发出不止一次直到页面刷新

时间:2019-02-11 14:52:58

标签: javascript vue.js

所以我正在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,但是它根本没有打开标签页。

在刷新页面之前,无论调用该方法多少次,我怎么都只能打开一个选项卡。也就是说,我叫了三遍,对于这三遍,它每次只会生成一个新标签,而不是一个,然后是两个,然后是三个标签。

任何帮助将不胜感激

2 个答案:

答案 0 :(得分:1)

我猜您不会致电EventBus.$off("this:that")来注销您的eventBus。因此它将被越来越多地射击。

答案 1 :(得分:0)

总是有如下习惯从正在监听事件的事件总线中删除事件监听器。

 beforeDestroy(){
    EventBus.$off('event-bus-name')
  }