Tengo una aplicación vue que es un cliente de correo. Actualmente, estoy escribiendo el código para ver los archivos adjuntos de correo electrónico:
A continuación se muestra un fragmento de la plantilla y el js
Código de plantilla relevante
<div class="modal-body text-center"> <object style="width:100%; min-height:750px;" id="attachment-preview" v-bind:data="inbox.attachment_data" v-bind:type="inbox.attachment_type"></object> </div>Código js relevante
let b64 = rsp.data; //rsp.data is a base64 encoded string - working properly because the first attachment loaded is fine and others work after issuing a command if (attachment.filename.includes('.pdf')) { app.inbox.attachment_data = `data:application/pdf;base64,` + b64; app.inbox.attachment_type = 'application/pdf'; } else if (attachment.filename.includes('.txt')) { app.inbox.attachment_data = `data:text/plain;base64,` + b64; app.inbox.attachment_type = 'text/plain'; } // you get the ideaEn la primera vista previa, todo funciona bien, el archivo adjunto se carga en la vista previa en consecuencia. Sin embargo, cuando intenta obtener una vista previa del siguiente archivo adjunto, hay un problema. Veo que los atributos de tipo y datos se configuran correctamente, pero el contenido que se muestra en la etiqueta del objeto no se actualiza hasta que hago algo como:
document.getElementById("attachment-preview").data = document.getElementById("attachment-preview").dataen la consola
¿Alguien tiene alguna idea de cómo puedo corregir esto o por qué sucedería esto?
Siento que podría ejecutar esto en un temporizador
document.getElementById("attachment-preview").data = document.getElementById("attachment-preview").datapero preferiría no tener que hacer esto.
EDITAR Eventualmente, me di por vencido y eliminé el objeto viejo e hice uno nuevo.
let object = document.createElement("object"); // set object properties //remove all children from attachment-preview-holder while (document.getElementById("attachment-preview-holder").firstChild) { document.getElementById("attachment-preview-holder").removeChild(document.getElementById("attachment-preview-holder").firstChild); } document.getElementById("attachment-preview-holder").appendChild(object);