#javascript #vuejs2 #event-handling #vue-component #event-listener
Вопрос:
У меня есть ситуация, когда событие, запущенное из родительского компонента, прослушивается несколькими дочерними компонентами.
e.g. Parent Component: emit -gt; "orderReceived" Child Component1( Tab1): on-gt; "orderReceived" -gt; fetch array1 from server Child Component2( Tab2): on-gt; "orderReceived" -gt; fetch array2 from server
когда обе эти вкладки открыты, все работает нормально. С чем я борюсь, так это с уничтожением прослушивателей событий на вкладке 1 и сохранением возможности прослушивания на вкладке 2. ( когда вкладка 1 закрыта). Прямо сейчас, если прослушиватели вкладки 1 будут уничтожены, это также отключит прослушиватели на вкладке 2.
Заранее спасибо.
Ответ №1:
Событие должно быть удалено из компонента, который прослушивал не оба , вам нужно использовать $off
, чтобы просто удалить выбранное событие, а не все события только из определенного компонента, а не для обоих
const ChildComponent1 = { methods:{ orderReceived(){ //orderReceived event emit } }, created(){ EventBus.$on('YOURCONTENT', this.orderReceived) }, beforeDestroy(){ EventBus.$off('YOURCONTENT', this.orderReceived) } }