diff --git a/src/core/xfa/bind.js b/src/core/xfa/bind.js index 6bfb1e806..76b171ca5 100644 --- a/src/core/xfa/bind.js +++ b/src/core/xfa/bind.js @@ -478,10 +478,10 @@ class Binder { if (dataChildren.length > 0) { this._bindOccurrences(child, [dataChildren[0]], null); } else if (this.emptyMerge) { - const dataChild = new XmlObject( + const dataChild = (child[$data] = new XmlObject( dataNode[$namespaceId], child.name || "root" - ); + )); dataNode[$appendChild](dataChild); this._bindElement(child, dataChild); } @@ -602,7 +602,10 @@ class Binder { if (!match) { // We're in matchTemplate mode so create a node in data to reflect // what we've in template. - match = new XmlObject(dataNode[$namespaceId], child.name); + match = child[$data] = new XmlObject( + dataNode[$namespaceId], + child.name + ); if (this.emptyMerge) { match[$consumed] = true; } diff --git a/src/core/xfa/template.js b/src/core/xfa/template.js index 03d61db6b..40d277f02 100644 --- a/src/core/xfa/template.js +++ b/src/core/xfa/template.js @@ -1150,11 +1150,11 @@ class CheckButton extends XFAObject { groupId = container[$uid]; type = "radio"; className = "xfaRadio"; - dataId = container[$data] && container[$data][$uid]; + dataId = (container[$data] && container[$data][$uid]) || container[$uid]; } else { type = "checkbox"; className = "xfaCheckbox"; - dataId = field[$data] && field[$data][$uid]; + dataId = (field[$data] && field[$data][$uid]) || field[$uid]; } const input = { @@ -1256,7 +1256,7 @@ class ChoiceList extends XFAObject { const selectAttributes = { class: ["xfaSelect"], fieldId: field[$uid], - dataId: field[$data] && field[$data][$uid], + dataId: (field[$data] && field[$data][$uid]) || field[$uid], style, }; @@ -1493,7 +1493,7 @@ class DateTimeEdit extends XFAObject { attributes: { type: "text", fieldId: field[$uid], - dataId: field[$data] && field[$data][$uid], + dataId: (field[$data] && field[$data][$uid]) || field[$uid], class: ["xfaTextfield"], style, }, @@ -3508,7 +3508,7 @@ class NumericEdit extends XFAObject { attributes: { type: "text", fieldId: field[$uid], - dataId: field[$data] && field[$data][$uid], + dataId: (field[$data] && field[$data][$uid]) || field[$uid], class: ["xfaTextfield"], style, }, @@ -5397,7 +5397,7 @@ class TextEdit extends XFAObject { html = { name: "textarea", attributes: { - dataId: field[$data] && field[$data][$uid], + dataId: (field[$data] && field[$data][$uid]) || field[$uid], fieldId: field[$uid], class: ["xfaTextfield"], style, @@ -5408,7 +5408,7 @@ class TextEdit extends XFAObject { name: "input", attributes: { type: "text", - dataId: field[$data] && field[$data][$uid], + dataId: (field[$data] && field[$data][$uid]) || field[$uid], fieldId: field[$uid], class: ["xfaTextfield"], style,