Массив Docxtemplater только вводит последнее значение

Здравствуйте, у меня есть форма, которую пользователь заполняет динамическими полями, которые пользователь может добавлять или удалять. После заполнения этой формы текстовый документ создается с использованием docxtemplater. Я создаю массив, так что я могу пройтись по нескольким элементам, которые будут введены в мой документ, хотя я получаю только последний введенный элемент.

Javascript:

var methods = document.getElementsByName("Method[]");
var attributes = document.getElementsByName("Attribute[]");
var locations = document.getElementsByName("Location[]");
var len = methods.length;
var mdata = []
for (var x = 0; x < len; x++){
    var element = {
        "Method": methods[x].value,
        "Attribute": attributes[x].value,
        "Location": locations[x].value
    };
    mdata.push(element);
} 
console.log(JSON.stringify(mdata));

var docxvar = {
    ShelfLifeExpiry: $("#shelfdrp").val(),
    monograph: "2",
    "testloop":
    [
       mdata
    ]
};

docx.docxtemplater.setData(docxvar);

Шаблон документа:

{#testloop} 
{Method} 
{Attribute} 
{Location} 
{/testloop} 

Из консоли:

[{"Method":"3434","Attribute":"434","Location":"434"},{"Method":"4343","Attribute":"3434","Location":"232"},{"Method":"3231","Attribute":"232","Location":"323321"}]

Как я могу получить все значения из этого в консоли в документ?

Спасибо вам.

1 ответ

Действительно, здесь вы писали:

arr = [...];
docx.setData({
   testloop: [arr],
});

Это означает, что вы передавали двумерный массив.

Вместо этого просто напишите:

arr = [...];
docx.setData({
   testloop: arr,
});
Другие вопросы по тегам