我正在使用這個(gè)庫(kù)將一些佔(zhàn)位符替換為 docx 模板並產(chǎn)生多個(gè)文件。我在前端使用中性諾和 vue,並且建立了一個(gè)方法,將選定的 docx 檔案和資料傳遞到庫(kù)進(jìn)行處理。我以這種方式使用了 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]) }
要傳遞的資料是從兩個(gè)數(shù)字合併的,如果我控制臺(tái)記錄它們,我可以看到所有 si 都就位。如文件所述,我使用方括號(hào) {}
來設(shè)定佔(zhàn)位符,並且佔(zhàn)位符的名稱與 dataPlaceholders
中每個(gè)鍵的名稱相同大批。經(jīng)過測(cè)試後,我注意到我能夠產(chǎn)生不同的文檔,但佔(zhàn)位符不會(huì)被替換,並且文檔中會(huì)有空白欄位。
我怎麼能修復(fù)它以使這個(gè)工作正確?
經(jīng)過一番嘗試並閱讀了一些有關(guān)如何在循環(huán)內(nèi)實(shí)現(xiàn)非同步呼叫的問題後,我選擇使用 Array.prototype.map 函數(shù),並且它工作正常。我已經(jīng)修改了將庫(kù)呼叫為非同步方法的 vue 方法,但我保留了 then
區(qū)塊,這樣我就能夠在庫(kù)完成處理後取得已處理的文件。 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。