XFA Live Child Collections
JavaScript- en FormCalc-events kunnen de huidige kindnodes van een formulier-node of property-node inspecteren via diens read-only nodes-property
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);
Huidige kinderen lezen
| Lid | Gedrag |
|---|---|
length | Huidig aantal kindnodes |
item(index) | Huidig kind op die zero-based index, of null voor een negatieve, niet-integer of out-of-range index |
namedItem(name) | Eerste huidig kind met die letterlijke naam, of null wanneer geen kind matcht |
nodes[index] | Dezelfde huidige node als item(index) |
for...of | Leest kindnodes in diens huidige volgorde |
clone() | Creëert een onafhankelijke query-lijst die naar de huidige kinderen verwijst |
De collectie resolvt diens eigenaar bij elke read via de huidige event-graaf, inclusief een collectie vastgehouden door een script-object over events heen
Bestaande collecties weerspiegelen herhaalde-instance-toevoegingen en -verwijderingen en impliciete property-creatie; aparte herhaalde instances houden aparte property-kinderen en -waarden vast
Een vastgehouden collectie waarvan de eigenaar is verwijderd, raiset een fout in plaats van een overlevende of vervangende instance te targeten
FormCalc-toegang
FormCalc herkent nodes als een kind-collectie-property op formulier-, property- en Data DOM-nodes
if (xfa.record.nodes.length >= 2) then
xfa.record.nodes.item(1).nodes.namedItem("amount").rawValue = "Updated"
endif
Directe length-, item(index)-, namedItem(name)- en clone()-member-ketens gebruiken dezelfde huidige native nodes en collectielimieten als JavaScript
Formulier-, property- en Data DOM-kind-collecties ondersteunen directe nodes[index]-reads in zowel JavaScript als FormCalc
Collectie-indices zijn zero-based; for...of blijft JavaScript-syntax
Writes via een FormCalc-collectie-referentie werken de echt gebonden datawaarde bij en behouden herhaalde-instance-isolatie; gecommitte waarden overleven XDP-opslag, runtime-herladen en native PDF-appearance-generatie
Data DOM-numerieke indices
const rows = xfa.record.nodes;
rows[1].nodes[0].rawValue = "Updated";
Canonicke niet-negatieve integer-keys zoals "0" en "1" resolven het huidige Data DOM-kind en geven null terug buiten de collectie; niet-canonicke keys zoals "01", "-0" en "1.0" aliasen geen numerieke entries
JavaScript index in nodes checkt het huidige kindaantal, en directe toewijzing, verwijdering of herdefinitie van een canonicke numerieke entry raiset TypeError
Dezelfde numerieke-entry-beperkingen gelden binnen een script-object-functie die de collectie in lexicale status vasthoudt, evenals wanneer een ander event een collectie leest die door die functie wordt teruggegeven
Gebruik de bestaande Data DOM-structurele methodes om kinderen te herordenen of te verwijderen; een collectie vastgehouden door een script-object leest de huidige event-graaf na elke gecommitte bewerking en na rollback
Onafhankelijke klonen
Een gekloonde kindlijst gebruikt de onafhankelijke opslag die XFA Query Node Collections beschrijft; diens append-, insert- en remove-methodes wijzigen die onafhankelijke opslag
Een node waarnaar door een van beide lijsten wordt verwezen, wegschrijven wijzigt de echte native node, en gecommitte waarden en property-overrides persisteren door opgeslagen XDP en native PDF-appearance-generatie heen
Data DOM-kind-collecties leveren ook clone() met onafhankelijke entry-opslag; diens bestaande structurele append-, insert- en remove-methodes blijven de native databoom muteren
Transacties en limieten
Live collectie-objecten en onafhankelijke klonen delen de event collectie-allocatie-limieten, operation-checks en transactie-deadline
Een niet-gevangen eventfout of budgetfalen herstelt native waarden, herhaalde instances, vastgehouden scriptstatus, onafhankelijke lijstopslag en journal-status samen
Formulier- en property-live-collecties zijn read-only; directe toewijzing, verwijdering, property-herdefinitie, prototype-wijzigingen en het verhinderen van extensies raisen een fout
Data DOM-collecties verwerpen writes, verwijdering en herdefinitie van canonicke numerieke entries terwijl diens bestaande benoemde structurele methodes en gewone niet-numerieke property-gedrag behouden blijven
Dekking
Deze interface legt huidige formulier- en property-kind-collecties en onafhankelijke kindlijst-klonen bloot
Algemene template-/formulier-node-creatie, recursief node-klonen, kind-boom-insertie en -verwijdering en extra node-klassa-bindingen blijven apart werk