Событие компонента vuejs с: не работает

У меня есть компонент vuejs, внутри одного метода моих компонентов, я отправляю событие как это:

this.$emit('user:registerd', [user])

На родителя я пытаюсь захватить его используя

<user v-on:user:registered="showSuccess"> </user>

Но вышесказанное никогда не работает showSuccess метод. Если я пропущу : часть от emit и v-on все работает просто отлично. Я думал, что можно было использовать : как-то использовать его в компонентах.

Кто-нибудь знает, почему это не работает?

1 ответ

Решение

Если вы излучаете:

this.$emit('user:registerd', [user])

Слушать:

<user v-on:user:registerd="showSuccess"> </user>


OTOH, если вы хотите слушать:

<user v-on:user:registered="showSuccess"> </user>

Вы должны излучать как:

this.$emit('user:registered', [user])

Просто помните, что вы отправляете массив из одного элемента в функцию-обработчик.


Небольшая демонстрация:

Vue.component('child', {
  template: `<button @click="$emit('user:registered', [123])">CLICK ME TO EMIT EVENT</button>`
})
new Vue({
  el: '#app',
  data: {
    message: 'Hello Vue.js!'
  },
  methods: {
   showSuccess(e) {
      this.message = 'Success. Received: ' + JSON.stringify(e);
    }
  }
})
<script src="https://unpkg.com/vue"></script>

<div id="app">
  <p>{{ message }}</p>
  <child @user:registered="showSuccess"></child>
</div>

Другие вопросы по тегам