Después de de esta larga búsqueda de datos hemos podido solucionar esta pregunta que tienen muchos de nuestros usuarios. Te regalamos la solución y nuestro deseo es serte de gran apoyo.
Solución:
No se necesita bus de eventos y modelo v
Actualizar:
Cuando respondí esto por primera vez, publiqué mi respuesta como una “solución alternativa”, ya que no se sentía completamente “correcta” en ese momento y era nuevo en Vue.js. Quería abrir o cerrar el cuadro de diálogo usando un modelo v directiva, pero no pude llegar allí. Después de un tiempo encontré cómo hacer esto en los documentos, usando el evento de entrada y el propiedad de valory así es como creo que debería hacerse sin un bus de eventos.
Componente principal:
Componente hijo (ScheduleForm):
Close
Respuesta original:
Pude solucionar esto sin la necesidad de un bus de eventos global.
Usé una propiedad calculada con un getter Y un setter. Dado que Vue le advierte sobre la mutación de la propiedad principal directamente, en el setter simplemente emití un evento al padre.
Aquí está el código:
Componente principal:
Componente hijo (ScheduleForm):
Close
Hay muchas maneras de hacerlo, como Vuex, Event Bus, Props con los que puede administrar si el modal debe abrirse o cerrarse. Le mostraré mi forma favorita usando el
.sync
modificador:
Primero simplificaré tu pregunta (la parte del código)
Componente principal
Componente secundario (diálogo)
Use Google's location service?
Let Google help apps determine location. This means sending anonymous location data to Google, even when no apps are running.
Close
Ejemplo de trabajo mínimo simple
códec
Pasar value
apoyar como value
para v-dialog
componente, y desde el diálogo secundario emiten input
evento cada vez que quieras cerrarlo:
//CustomDialog.vue
Close
...
props:['value']
y agregue v-model a su padre
//Parent.vue
Así que no hay bus de eventos personalizado, no data
no watch
no computed
.
Comentarios y puntuaciones
Si te sientes suscitado, puedes dejar una crónica acerca de qué te ha gustado de esta crónica.