如果找到特定值,如何停止在EventBus中发送数据?

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

我正在使用Javascript开发Vuejs组件。我有一个组件将EventBus发射到其他组件。在发送器组件上,我有一个索引列表,该索引一目了然地转到另一个组件,以评估其是否为真。例如:

listA: 0
listA: 0
listA: 0
listA: 0
listA: 1
listA: 0
listA: 0

在接收器组件上,我一张一张地得到listA。我正在做一个开关箱,以查看何时接收到值1并将其返回给具有特定CSS的div中的html。在我的交换机中,遇到如下值1时,我取消了事件总线:

switch(listA) {
   case 1: 
      return something
      EventBus.$off('event-message');
   case 0: 
      // do nothing
}

这很好,但是...我的问题是当我必须在同一页面中针对不同的div使用两次或多次此操作时。我想对所有div使用相同的事件,否则代码会越来越长,当我在一个div中取消事件时,它将取消所有div中的事件。是否有人有想法可以在不取消事件的情况下返回值1,并且如果遇到值1就会停止查看其余值?

javascript vue.js events ecmascript-6 web-frameworks
2个回答
0
投票

Vue的EventBus有3种使用$off的方式:


0
投票

首先,我完全反对使用事件总线,这就像您将扬声器从人群中喊出来并喊着GABRIEL,加百利能听到多少消息并做出回应,这就是事件总线的效果,它会尖叫每个人都可以听到,这对于您的应用程序来说可能是个大问题,我建议您使用事件传播,直到通过$ emissions和properties到达理想的组件为止。但是要停止事件,必须触发事件。EventBus。$ off('event-message',nameFunctionAction);https://vuejs.org/v2/guide/components.html#Listening-to-Child-Components-Events

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