Estoy emitiendo dos eventos personalizados diferentes desde el niño y, por alguna razón, el segundo evento no funciona.
Revisé en la consola Vue y ambos eventos se están activando, sin embargo, no sucede nada para el segundo evento. Cuando comento el primero, el segundo funciona correctamente, como si el primero estuviera bloqueando al segundo.
<child-component @upload="handleUpload" @uploading="mediaUploading" /> methods: { handleUpload(response) { //doesn't work this.mediaLoading = false; console.log(this.mediaLoading); }, mediaUploading() { //works this.mediaLoading = true; }, }En componente hijo
this.$emit('uploading'); try { data = await this.$api.get('/photo'); } catch (e) { console.log(e) } this.$emit('upload', data);He pegado el código en mi máquina y ambos funcionan bien.
padre
<template> <child-component @upload="handleUpload" @uploading="mediaUploading" /> </template> <script> import childComponent from "./page4child.vue"; export default { components: { childComponent, }, data() { return { mediaLoading: true, }; }, methods: { handleUpload(response) { //works this.mediaLoading = false; console.log(this.mediaLoading); }, mediaUploading() { //works this.mediaLoading = true; console.log(this.mediaLoading); }, }, }; </script>Niño
<template> <div> <button @click="trigger('item')">run</button> </div> </template> <script> export default { methods: { async trigger(uploadedItem) { this.$emit("uploading"); await new Promise((res) => { console.log("duck"); res(); }); this.$emit("upload", uploadedItem); }, }, }; </script>