vessels
@vessels
Ни черта не понял, но очень интересно!

Как решить эту проблему?

Добрый день!
Перейду сразу к делу, я хочу чтобы допустим забинденная кнопка на клик из одного компонента могла использоваться в другом. Например:

У меня есть кнопка в компоненте компоненте Navbar.vue
<template>
<div class="navbar-url">
	<div>
		<button v-on:click="a_menu_trigger">Menu</button>
	</div>
</div>
</template>

<script>
export default{
	data: function(){
		return{

		}
	}
}

</script>

И мне нужно чтобы эта кнопка a_menu_trigger могла триггерить какой-то элемент из другого компонента, допустим открыть меню.
Как можно реализовать подобное деяние?
  • Вопрос задан
  • 961 просмотр
Решения вопроса 1
origami1024
@origami1024
went out for a night walk
Три варианта:
1. Посылать ивент в батю, батя пошлет деду, так до общего предка, общий предок спустит пропс своим наследникам.
2. Использовать Vuex, изменять там состояние, чтобы другой элемент просто обновлялся при изменении затрагивающих его состояний
3. Общаться напрямую через рут
Компонент1:
this.$root.$emit('eventing', data);
Компонент2:
mounted() {
  this.$root.$on('eventing', data => {
    console.log(data);
  });
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
IgorPI
@IgorPI
Чтобы в родителе ловить эвенты, достаточно

child
<template>
  <div @click="$emit('click')"></div>
</template>

parent
<template>
  <div class="warp">
    <item @click="" />
    <item @click="" />
    <item @click="" />
  </div>
</template>
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы