Vue – Component – $emit

$emit

Event trigger method.
We can use this trigger event by code.

Simple Example

vm.$on('test', function (msg) {
  console.log(msg)
})
vm.$emit('test', 'hi')

Communicate with parent method

Use on and parent method, child can trigger parent method.
This is example from Vue documentation.

<html>
  <head>
    <script src="https://cdn.jsdelivr.net/npm/vue"></script>
  </head>
  <body>
    <div id="fruits-counter">
      <div v-for="fruit in fruits">
        {{fruit.name}}: <counter-button v-on:increment="increment()"></counter-button>
      </div>
      <p>Total: {{total}}</p>
    </div>
    <script>
    var counterButton = Vue.extend({
      template: '<span>{{counter}} <button v-on:click="addToCart">Add</button></span>',
      data: function () {
        return {
          counter: 0
        }
      },
      methods: {
        addToCart: function () {
          this.counter += 1
          this.$emit('increment')
        }
      },
    });

    new Vue({
      el: '#fruits-counter',
      components: {
  	     'counter-button': counterButton
      },
      data: {
        total: 0,
        fruits: [
          {name: 'Apple'},
          {name: 'Grape'}
        ]
      },
      methods: {
        increment: function () {
          this.total += 1
        }
      }
    });
    </script>
  </body>
</html>