当组件被多次加载时,eventBus正在侦听重复事件

rut*_*ut2 0 vue.js vue-component vuejs2

我面临着vue.js eventBus非常重要和奇怪的问题.

我的代码是这样的,

mounted: function() {
    eventBus.$on('load-item', () => {
        // some loading data ajax 
    })
}
Run Code Online (Sandbox Code Playgroud)

所以,如果我第一次进入这个组件,它将只执行一次.但是如果我切换到其他组件然后又回到这个组件,事件会发出一次,但是监听器正在执行这个功能2次.因此每次访问此组件时,它都会越来越多地加载数据.第三次3 Ajax请求.第4次4 ajax等.

我试过以下解决方案,

beforeDestroy: function () {
    eventBus.$off('load-item');
}
Run Code Online (Sandbox Code Playgroud)

所以上面的代码将删除监听器,它是否只在它破坏组件时才起作用.但就我而言,如果另一个视图使用相同的组件,则会出现相同的问题.

我的问题是,当我们更改页面时,完全删除事件监听器的最佳方法是什么?

在vue.js有什么东西吗?

如果您不清楚,我可以详细解释.

Kev*_*kal 8

也许你需要eventBus.$once而不是eventBus.$on 在执行它之后使用$,它将不再被调用,除非它再次被初始化