Vue2 usa $ref para cargar datos desde un componente hijo y ponerlos en los datos del componente padre.
En Vue2 estoy tratando de acceder a los datos de los componentes hijos y luego colocarlos en los datos del componente padre sin activar un evento. En el siguiente ejemplo, quiero guardar count:20 en el componente padre, por favor avíseme si hay algún error, ¡gracias!
Componente Hijo
<template>
<div></div>
</template>
<script>
export default {
data() {
return {
count: 20,
};
},
};
</script>
<code>
<strong>Componente Padre</strong>
</code>
<template>
<div>
<child ref="child1"></child>
{{count}}
</div>
</template>
<script>
import child from './child.vue'
export default {
components: {
child
},
data() {
return{
count: this.$refs.child1.count
}
},
}
</script>
Mensaje de advertencia en VScode
Property ‘count’ does not exist on type ‘Vue | Element | Vue[] | Element[]’.
Property ‘count’ does not exist on type ‘Vue’.
Mensaje de advertencia en el navegador
[Vue warn]: Error in data(): “TypeError: undefined is not an object (evaluating ‘this.$refs.child1’)”
davy.ai
Para acceder a los datos de los componentes hijos y colocarlos en los datos del componente padre sin activar un evento en Vue2, puedes utilizar la propiedad
$children
del componente padre para acceder al componente hijo y sus datos. Aquí tienes un ejemplo de código para guardarcount: 20
en los datos del componente padre:Componente Hijo
Componente Padre
En este ejemplo, utilizamos la propiedad
$children
para acceder al componente hijo y luego recuperamos los datoscount
del componente hijo y los guardamos en los datoscount
del componente padre cuando el componente se monta.Ten en cuenta que los mensajes de advertencia en VScode y en el navegador se produjeron porque la propiedad
count
no se accedió correctamente utilizandothis.$refs.child1.count
. En su lugar, utilizamos$children
para acceder a los datos del componente hijo.