我正在使用這個庫將一些佔位符替換為 docx 模板並產生多個文件。我在前端使用中性諾和 vue,並且建立了一個方法,將選定的 docx 檔案和資料傳遞到庫進行處理。我以這種方式使用了 for 迴圈
// 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]) }
要傳遞的資料是從兩個數字合併的,如果我控制台記錄它們,我可以看到所有 si 都就位。如文件所述,我使用方括號 {}
來設定佔位符,並且佔位符的名稱與 dataPlaceholders
中每個鍵的名稱相同大批。經過測試後,我注意到我能夠產生不同的文檔,但佔位符不會被替換,並且文檔中會有空白欄位。
我怎麼能修復它以使這個工作正確?
P粉3948122772024-03-31 00:57:29
經過一番嘗試並閱讀了一些有關如何在循環內實現非同步呼叫的問題後,我選擇使用 Array.prototype.map 函數,並且它工作正常。我已經修改了將庫呼叫為非同步方法的 vue 方法,但我保留了 then
區塊,這樣我就能夠在庫完成處理後取得已處理的文件。 p>
this.dataPlaceholders.map( async (data, i) => { let filename = data.supplier + '.docx' this.docxTemplate.process(template, data).then( (result) => { // code to download files here let a = document.createElement('a') let downloadLink = URL.createObjectURL(result) a.href = downloadLink a.download = filename a.click() }) })
唯一需要解決的是如何在下載所有檔案後撤銷 blob url。