0

您好,我有一个用户填写的表单,其中包含用户可以添加或删除的一些动态字段。完成此表格后,正在使用 docxtemplater 创建一个 word 文档。我正在创建一个数组,以便我可以遍历将输入到我的文档中的多个项目,尽管我只输入了最后一个项目。

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
    ]
};

doc.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"}]

如何将控制台中的所有值获取到文档中?

4

1 回答 1

0

确实,在这里,您正在写:

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

这意味着您正在传递一个二维数组。

相反,只需编写:

arr = [...];
doc.setData({
   testloop: arr,
});
于 2018-02-09T22:59:09.167 回答