javascriptvue.jsvuejs2vue-component

Vue.js - How to call method from another component


I am using Vue.Js v2. I want to call component1->c1method in component2->c2method for reload data after submitting.

Vue.component('component1', {
  methods: {
    c1method: function(){
     alert('this is c1method')
    },
  }
})
Vue.component('component2', {
  methods: {
    c2method: function(){
     component('component1').c1method()//like this
    },
  }
})

Solution

  • For non-parent-child relation, then this is the same as this one. Call one method, apparently any method of a component from any other component. Just add a $on function to the $root instance and call form any other component accessing the $root and calling $emit function.

    On First component

        ....
        mounted() {
            this.$root.$on('component1', () => {
                // your code goes here
                this.c1method()
            }
        }
    

    and in the second component call the $emit function in $root

        ...
        c2method: function(){
         this.$root.$emit('component1') //like this
        },
    

    It acts more like a socket. Reference here

    https://stackoverflow.com/a/50343039/6090215