@gage Используйте $emit() чтобы передать данные обратно родителю в Vue.js и ниже небольшой пример кода:
Родительский компонтент:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
<template> <div class="container"> <h1>Тестовый компонент</h1> <p>{{ text }}</p> <child @update-text="updateText" /> </div> </template> <script> import Child from '@/components/Child' export default { name: 'Test', components: { Child }, data() { return { text: '', } }, methods: { updateText(text) { this.text = text }, }, } </script> |
Дочерний компонент:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<template> <div class="wrapper"> <button @click="passToParent">Передать данные родителю</button> </div> </template> <script> export default { name: 'Child', methods: { passToParent() { this.$emit('update-text', 'привет из родителя') }, }, } </script> |
@gage
Вы можете передать данные родительскому компоненту в Vue.js, используя события. В дочернем компоненте вы можете создать метод и вызвать его в результате действия пользователей в вашем компоненте. Затем вызовите этот метод с помощью this.$emit('event-name', data)
и передайте данные в родительский компонент. В родительском компоненте вы можете слушать это событие с помощью v-on:event-name="handler"
и обработать данные в методе обработчика.
Например, в дочернем компоненте:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
<template> <button @click="sendData">Send Data to Parent</button> </template> <script> export default { data() { return { message: 'Hello from child!' } }, methods: { sendData() { this.$emit('child-data', this.message) } } } </script> |
В родительском компоненте:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
<template> <div> <child-component @child-data="handleData"></child-component> <p>Received data: {{ receivedData }}</p> </div> </template> <script> import ChildComponent from './ChildComponent.vue' export default { components: { ChildComponent }, data() { return { receivedData: '' } }, methods: { handleData(data) { this.receivedData = data } } } </script> |