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

标签 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 但它根本没有打开选项卡。

无论在刷新页面之前调用该方法多少次,我如何才能只打开一个选项卡。即我调用它三次,对于这三次调用,它每次只生成一个新选项卡,而不是一个,然后是两个,然后是三个选项卡。

任何帮助将不胜感激

最佳答案

我猜你不会调用 EventBus.$off("this:that") 来注销你的 eventBus。所以它会越来越火。

关于javascript - EventBus 发出不止一次直到页面刷新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54633203/

相关文章:

javascript - Node JS/Mongodb - 最佳实践 restful API

javascript - 存储 javascript 的更安全方法是什么?

javascript - Event.target.value 在我的 React 代码中不起作用

javascript - Vue.js 如何删除组件 v-for 值

javascript - Vue.js 组件不显示组件方法中的数据

javascript - 如何在vue.js中从数组中获取对象

vue.js - Nuxt 和 Ag Grid 问题 SyntaxError Missing stack frames

vue.js - 渲染中的 Vue 错误 : "RangeError: Invalid array length"

javascript - 如何在 angularjs 中将数据从工厂传递到我的 Controller ?

javascript - JS循环遍历表格并根据条件在列中打印文本