XFA Live Child Collections
JavaScript- und FormCalc-Ereignisse können die aktuellen Kindknoten eines Form- oder Property-Knotens über seine schreibgeschützte nodes-Property inspizieren
const field = xfa.resolveNode("row[1].amount");
const children = field.font.nodes;
const snapshot = children.clone();
field.font.fill.color.value = "192,48,96";
const fill = children.item(0);
Aktuelle Kinder lesen
| Member | Verhalten |
|---|---|
length | Aktuelle Anzahl der Kindknoten |
item(index) | Aktuelles Kind an diesem nullbasierten Index oder null für einen negativen, nichtganzzahligen oder außerhalb liegenden Index |
namedItem(name) | Erstes aktuelles Kind mit diesem literalen Namen oder null, wenn kein Kind passt |
nodes[index] | Derselbe aktuelle Knoten wie item(index) |
for...of | Kindknoten in ihrer aktuellen Reihenfolge lesen |
clone() | Eine unabhängige Query-Liste erzeugen, die die aktuellen Kinder referenziert |
Die Collection löst ihren Owner bei jedem Lesezugriff über den aktuellen Ereignisgraphen auf, einschließlich einer Collection, die ein Script-Objekt über Ereignisse hinweg zurückhält
Bestehende Collections spiegeln wiederholte Instanz-Ergänzungen und -Entfernungen sowie implizite Property-Erzeugung wider; separate wiederholte Instanzen halten separate Property-Kinder und -Werte
Eine zurückgehaltene Collection, deren Owner entfernt wurde, wirft einen Fehler, statt auf eine überlebende oder Ersatzinstanz zu zielen
FormCalc-Zugriff
FormCalc erkennt nodes als Child-Collection-Property an Form-, Property- und Data-DOM-Knoten
if (xfa.record.nodes.length >= 2) then
xfa.record.nodes.item(1).nodes.namedItem("amount").rawValue = "Updated"
endif
Direkte length-, item(index)-, namedItem(name)- und clone()-Member-Ketten nutzen dieselben aktuellen nativen Knoten und Collection-Limits wie JavaScript
Form-, Property- und Data-DOM-Child-Collections unterstützen direkte nodes[index]-Lesezugriffe in JavaScript und FormCalc
Collection-Indizes sind nullbasiert; for...of bleibt JavaScript-Syntax
Schreibzugriffe über eine FormCalc-Collection-Referenz aktualisieren den tatsächlich gebundenen Datenwert und behalten die wiederholte Instanz-Isolation; committed Werte überleben XDP-Speichern, Runtime-Neuladen und die native PDF-Appearance-Generierung
Data-DOM-numerische Indizes
const rows = xfa.record.nodes;
rows[1].nodes[0].rawValue = "Updated";
Kanonische nichtnegative Ganzzahl-Keys wie "0" und "1" lösen das aktuelle Data-DOM-Kind auf und liefern null außerhalb der Collection; nichtkanonische Keys wie "01", "-0" und "1.0" aliasen keine numerischen Einträge
JavaScript index in nodes prüft die aktuelle Kinderanzahl, und direkte Zuweisung, Löschung oder Neudefinition eines kanonischen numerischen Eintrags wirft TypeError
Dieselben numerischen Eintragsbeschränkungen gelten innerhalb einer Script-Objekt-Funktion, die die Collection im lexikalischen State zurückhält, sowie wenn ein anderes Ereignis eine von dieser Funktion zurückgegebene Collection liest
Die bestehenden Data-DOM-Strukturmethoden verwenden, um Kinder umzuordnen oder zu entfernen; eine von einem Script-Objekt zurückgehaltene Collection liest nach jeder committed Editierung und nach Rollback den aktuellen Ereignisgraphen
Unabhängige Clones
Eine geklonte Kindliste nutzt die in XFA Query Node Collections beschriebene unabhängige Speicherung; ihre append-, insert- und remove-Methoden ändern diese unabhängige Speicherung
Das Schreiben eines Knotens, der von einer der Listen referenziert wird, ändert den tatsächlichen nativen Knoten, und committed Werte und Property-Overrides persistieren durch gespeichertes XDP und die native PDF-Appearance-Generierung
Data-DOM-Child-Collections bieten ebenfalls clone() mit unabhängiger Eintragsspeicherung; ihre bestehenden strukturellen append-, insert- und remove-Methoden mutieren weiterhin den nativen Datenbaum
Transaktionen und Limits
Live-Collection-Objekte und unabhängige Clones teilen sich die Event-Collection-Allokationslimits, Operationsprüfungen und die Transaktionsfrist
Ein nicht abgefangener Event-Fehler oder Budget-Fehler stellt native Werte, wiederholte Instanzen, zurückgehaltenen Script-State, unabhängige Listenspeicherung und Journalzustand gemeinsam wieder her
Form- und Property-Live-Collections sind schreibgeschützt; direkte Zuweisung, Löschung, Property-Neudefinition, Prototyp-Änderungen und das Verhindern von Extensions werfen einen Fehler
Data-DOM-Collections lehnen Schreibzugriffe, Löschung und Neudefinition kanonischer numerischer Einträge ab und behalten ihre bestehenden benannten Strukturmethoden sowie das gewöhnliche nichtnumerische Property-Verhalten
Abdeckung
Diese Schnittstelle exponiert aktuelle Form- und Property-Child-Collections sowie unabhängige Kindlisten-Clones
Allgemeine Template-/Form-Knotenerzeugung, rekursives Knotenklonen, Kindbaum-Einfügen und -Entfernen sowie zusätzliche Knotenklassen-Bindings bleiben separate Arbeiten