Есть ли способ вызвать компонентный метод из родителя в VueJS?

Я искал информацию и нашел способ генерировать события из дочерних компонентов, которые затем можно прослушать в родительских компонентах. Есть ли способ вызвать дочерний метод из родительского компонента?

Ответ 1

Yup, просто найдите свой компонент в массиве children или захватите его атрибутом ref и вызовите метод:) ref doc

позволяет предположить, что ваш дочерний компонент имеет метод x. Согласно документации:

<div id="parent">
  <user-profile ref="profile"></user-profile>
</div>

var child = this.$refs.profile;
child.x();

Ответ 2

Я думаю, что хороший шаблон для этого - это излучение события из родительского компонента и прослушивание его в дочернем компоненте, используя Event Bus.

Это будет:

в main.js

export const bus = new Vue()

в Parent.vue:

import {bus} from 'path/to/main'

// Where you wanna call the child method:
bus.$emit('customEventName', optionalParameter)

в Child.vue:

import {bus} from 'path/to/main'

// Add this to the mounted() method in your component options object:
bus.$on('customEventName', this.methodYouWannaCall)