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

MemberVerhalten
lengthAktuelle 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...ofKindknoten 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

Transaktionale XFA-Data-DOM-Struktur · XFA-Widget-Runtime