J'utilise cette bibliothèque pour remplacer certains espaces réservés par des modèles docx et générer plusieurs documents. J'utilise novo et vue neutres sur le front-end et j'ai créé une méthode qui transmet le fichier docx sélectionné et les données à la bibliothèque pour traitement. J'ai utilisé la boucle for de cette façon
// putting all the desired data into a specific array for(let i = 0; i < this.selectedData.length; i++){ this.dataPlaceholders.push({ key1: val1, key2: val2 }) } //call the library to get documents for(let i; i < this.dataPlaceholders.length; i++){ this.docxTemplate.process(template, this.dataPlaceholders[i]) }
Les données à transmettre sont fusionnées des deux tableaux et si je les enregistre sur la console, je peux voir que tous les fichiers sont en place. Comme indiqué dans la documentation, j'utilise des crochets {}
来设置占位符,并且占位符的名称与 dataPlaceholders
pour nommer chaque clé du même lot. Après les tests, j'ai remarqué que j'étais capable de générer un document différent, mais les espaces réservés n'étaient pas remplacés et il y aurait des champs vides dans le document.
Comment puis-je le réparer pour que cela fonctionne correctement ?
Après quelques essais et lecture de quelques questions sur la façon d'implémenter des appels asynchrones dans une boucle, j'ai choisi d'utiliser la fonction Array.prototype.map et cela a bien fonctionné. J'ai modifié la méthode vue qui appelle la bibliothèque en tant que méthode asynchrone, mais j'ai conservé le bloc
then
afin de pouvoir récupérer le document traité une fois le traitement de la bibliothèque terminé. p>La seule chose à résoudre est de savoir comment révoquer l'URL du blob après avoir téléchargé tous les fichiers.