Как вызвать функцию из другого компонента во вью?

есть компонент block1.vue

там есть

<p class="test1" @click="func()">Сontact</p>

есть block2.vue там нужно вызвать эту же функцию но так не будет ра

  <button class="test2" @click="func()">Block</button>


Ответы (1 шт):

Автор решения: Виктор Карев

Проще всего было бы перенести функцию из компонента в экземпляр Vue и вызывать таким образом: $root.func(). Но тогда компоненты становятся жёстко привязаны к экземпляру. Поэтому мы их отвяжем через механизм событий - отправим экземпляру событие 'test':

<button class="test2" @click="$root.$emit('test')">Block</button>

a в экземпляре событие будем обрабатывать:

methods: {
  func: function () {
  }
},
mounted: function () {
  $on('test', $this.func);
}
→ Ссылка