Обрабатывать неопределенные значения в массиве объектов docXTemplater или javascript
У меня есть массив объектов, который будет экспортирован в документ Word через DocXTemplater
Образец массива
[
{Name:"jon doe",age:27}
{Name:"joe roe",age:27,Address:"new jersey"}
]
Теперь DocXTemplate будет
{#arrayVarName}{Name},{age},{Address}{/arrayVarName}
Это будет выводить,
Jon,27,undefined
Joe,27,new jersey
Теперь я хочу отфильтровать все неопределенные и заменить их либо пустой строкой, либо некоторой пользовательской строкой, как это можно сделать в DocXTemplater, или можно заменить все неопределенные в массиве объектов пользовательской строкой?
4 ответа
Теперь вы можете настроить этот параметр глобально:
doc=new DocxGen(content);
doc.setOptions({nullGetter: function() {
return "";
}});
Начиная с Docxtemplater V4, вам не следует использовать это:
doc.setOptions({...})
Вместо этого вы должны указать параметры во время создания документа:
const doc = new Docxtemplater(zip, {nullGetter() { return ''; }});
Используйте угловой синтаксический анализатор для устранения неопределенного или нулевого
expressions= require('angular-expressions')
angularParser= function(tag){
expr=expressions.compile(tag);
return {get:expr};
}
Установите парсер, используя код ниже
doc=new DocxGen(content)
doc.setOptions({parser:angularParser})
В шаблоне используйте код ниже
{#value!=undefined}{value}{/value!=undefined}
Я пытался справиться с этим с помощью doc.setOptions (), но имел эту ошибку:
setOptions() не следует вызывать вручную при использовании конструктора v4
Что мне нужно было сделать, так это изменить эту часть кода, чтобы отображалось пустое пространство вместо неопределенного:
doc=new window.docxtemplater(zip, {nullGetter() { return ''; }});
Спасибо Dorpaxio. Но в моем случае это не сработало с:
const doc = new Docxtemplater();