Vue.js中动态元素上的EventBue $ off删除所有重复使用的组件,而不是一个

问题描述 投票:0回答:1

我有一个动态生成的组件,可以同时在一个页面上安装多次。例如,如果某个饲料返回了10种食品,则有10种成分。这个FoodItem组件有一个在安装时创建的事件总线,如下所示:

mounted() {
  EventBus.$on('SOME_EVENT', this.handleMyEventUniquely);
},
beforeDestroy() {
  EventBus.$off('SOME_EVENT', this.handleMyEventUniquely);
},
methods: {
  handleMyEventUniquely(event) {
    // this component, although mounted 10 times, will react different that the others.
  }
}

这有效。但是,如果删除了10个组件中的1个,它将触发beforeDestroy生命周期事件并删除ENTIRE应用程序的该事件总线侦听器。我只需要删除该组件即可。有没有办法做到这一点?另请注意,我不想将其放在父组件中。

vue.js vue-component event-bus
1个回答
0
投票

我能够解决它。上面的代码确实有效,这只是我的范围界定问题。我不恰当地与此交换了自己。

© www.soinside.com 2019 - 2024. All rights reserved.