2017-09-18 7 views
0

こんにちは私はユーザーが追加または削除できる動的なフィールドをユーザーが入力するフォームを用意しています。このフォームが完成すると、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"}] 

ありがとう。

+0

は、私がtestloop」で[]を削除する必要がありましたそれを考え出しました –

答えて

0

確かに、ここでは、あなたが書いた:

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

を使用すると、2次元配列を渡したことを意味しています。

代わりに、単に書く:

arr = [...]; 
docx.setData({ 
    testloop: arr, 
}); 
関連する問題