В vue, как я могу проверить, подписан ли какой-либо родительский компонент на событие, которое испускает дочерний элемент? - PullRequest
1 голос
/ 27 мая 2019

У меня есть компонент, который иногда используется в качестве дочернего элемента родителя, а иногда нет родителя.

Этот компонент генерирует определенное событие, которое либо перехватывается родителем (если подписано)или я бы хотел обработать его самим этим компонентом.

Итак, во время выполнения, Как программно проверить

if (someone is listening to the event){
    let them catch and handle it
}else {
    let's handle it by our own
}

Ответы [ 2 ]

2 голосов
/ 27 мая 2019

Это кажется сомнительным дизайном, но позволяет проверить прослушиватели, переданные компоненту:

this.$listeners;

Возвращает родительские прослушиватели событий области.См. документ здесь .

В частности, для вашего случая использования:

// To check whether the "myEvent" event is listened to
if (this.$listeners.myEvent){
  // let them catch and handle it
} else {
  // let's handle it by our own
}
0 голосов
/ 27 мая 2019

Вы можете передать булеву опору от своего родителя.

В родительском компоненте:

<Child :isParent='true'></Child>

В дочернем компоненте:

props : {
  isParent : Boolean
},

methods : {
  actionEvent : function(){
    if(this.isParent){
      // Emit event
    }
    else{
      // Take care over here.
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...