Удалить пустую строку в DocxTemplater
Я получаю заявлено с использованием DocxTemplater с Node.
Я пытаюсь выяснить, как удалить пустую строку, если элемент пуст (т. Е. '' Или null) - я не могу найти аналогичный случай на SO или в другом месте!
Мои заполнители на Docx выглядят так:
{#data}
{#input}
{Line1}
{Line2}
{Line3}
{/input}
{/data}
Любой мой массив выглядит так:
data: {
input: {
Line1: 'TEXT1',
Line2: '',
Line3: 'TEXT3'
},
}
Когда я создаю документ, я хотел бы удалить строку, в которой 'Line2' пусто.
Итак, вместо этого:
TEXT1
TEXT3
Я хотел бы
TEXT1
TEXT3
ОБНОВИТЬ
Изменил мой код на приведенный ниже согласно совету, однако не имел никакого успеха. Есть еще указатели? Заранее спасибо!
{#data}
{#input}
{#Line1}{Line1}{/Line1}
{#hasLine2}{Line2}{/hasLine2}
{#Line3}{Line3}{/Line3}
{/input}
{/data}
А также
data: {
input: {
Line1: 'TEXT1',
Line2: '',
Line3: 'TEXT3',
hasLine2: false
},
}
2 ответа
Я создатель docxtemplater
Вы можете сделать так:
{#data}
{#input}
{#Line1}
{Line1}
{/Line1}
{#hasLine2}
{Line2}
{/hasLine2}
{#Line3}
{Line3}
{/Line3}
{/input}
{/data}
а ты в своем коде:
new Docxtemplater()
.loadZip(zip)
.setOptions({paragraphLoop:true})
С помощью параметра абзаца, если начало цикла и конец цикла находятся в отдельных абзацах, вы не получите никакого дополнительного пространства, когда ваши разделы пусты.
Это задокументировано здесь: https://docxtemplater.readthedocs.io/en/latest/configuration.html?highlight=paragraphLoop
Apperantly In docxtemplater, conditions and loops use the same syntax called Sections
,
Таким образом, вы можете сделать шаблон как:
{#data}
{#input}
{#Line1}{.}{/Line1}
{#Line2}{.}{/Line2}
{#Line3}{.}{/Line3}
{/input}
{/data}