Collections d'enfants vivantes XFA

Les événements JavaScript et FormCalc peuvent inspecter les nœuds enfants courants d'un nœud de formulaire ou de propriété via sa propriété nodes en lecture seule

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);

Lecture des enfants courants

MembreComportement
lengthNombre courant de nœuds enfants
item(index)Enfant courant à cet index à base zéro, ou null pour un index négatif, non entier ou hors plage
namedItem(name)Premier enfant courant portant ce nom littéral, ou null quand aucun enfant ne correspond
nodes[index]Même nœud courant que item(index)
for...ofLit les nœuds enfants dans leur ordre courant
clone()Crée une liste de requête indépendante référençant les enfants courants

La collection résout son propriétaire à chaque lecture via le graphe d'événement courant, collection conservée par un objet script entre événements comprise

Les collections existantes reflètent les ajouts et retraits d'instances répétées et la création implicite de propriétés ; des instances répétées séparées gardent des enfants et des valeurs de propriétés séparés

Une collection conservée dont le propriétaire a été retiré lève une erreur au lieu de viser une instance survivante ou de remplacement

Accès FormCalc

FormCalc reconnaît nodes comme propriété de collection d'enfants sur les nœuds de formulaires, de propriétés et du Data DOM

if (xfa.record.nodes.length >= 2) then
  xfa.record.nodes.item(1).nodes.namedItem("amount").rawValue = "Updated"
endif

Les chaînes de membres directes length, item(index), namedItem(name) et clone() utilisent les mêmes nœuds natifs courants et les mêmes limites de collection que JavaScript

Les collections d'enfants de formulaires, de propriétés et du Data DOM prennent en charge les lectures directes nodes[index] en JavaScript comme en FormCalc

Les indices de collections sont à base zéro ; for...of reste une syntaxe JavaScript

Les écritures via une référence de collection FormCalc mettent à jour la valeur de données réellement liée et gardent l'isolation des instances répétées ; les valeurs commises survivent à l'enregistrement XDP, au rechargement de la runtime et à la génération d'apparences PDF natives

Indices numériques du Data DOM

const rows = xfa.record.nodes;
rows[1].nodes[0].rawValue = "Updated";

Les clés entières non négatives canoniques comme "0" et "1" résolvent l'enfant Data DOM courant et retournent null hors de la collection ; les clés non canoniques comme "01", "-0" et "1.0" ne aliasent pas les entrées numériques

index in nodes en JavaScript vérifie le nombre d'enfants courant, et l'affectation directe, la suppression ou la redéfinition d'une entrée numérique canonique lève TypeError

Les mêmes restrictions d'entrées numériques s'appliquent à l'intérieur d'une fonction d'objet script qui conserve la collection dans son état lexical, ainsi que quand un autre événement lit une collection retournée par cette fonction

Utilisez les méthodes structurelles Data DOM existantes pour réordonner ou retirer des enfants ; une collection conservée par un objet script lit le graphe d'événement courant après chaque édition commise et après un rollback

Clones indépendants

Une liste d'enfants clonée utilise le stockage indépendant décrit dans Collections de nœuds de requête XFA ; ses méthodes append, insert et remove modifient ce stockage indépendant

Écrire un nœud référencé par l'une ou l'autre liste change le véritable nœud natif, et les valeurs commises et surcharges de propriétés persistent à travers le XDP enregistré et la génération d'apparences PDF natives

Les collections d'enfants du Data DOM fournissent aussi clone() avec un stockage d'entrées indépendant ; leurs méthodes structurelles append, insert et remove existantes continuent de muter l'arbre de données natif

Transactions et limites

Les objets de collections vivantes et les clones indépendants partagent les limites d'allocation de collections d'événements, les contrôles d'opérations et l'échéance transactionnelle

Une erreur d'événement non interceptée ou un échec de budget restaure ensemble les valeurs natives, les instances répétées, l'état de script conservé, le stockage de listes indépendantes et l'état du journal

Les collections vivantes de formulaires et de propriétés sont en lecture seule ; affectation directe, suppression, redéfinition de propriétés, changements de prototype et empêchement des extensions lèvent une erreur

Les collections du Data DOM rejettent écriture, suppression et redéfinition des entrées numériques canoniques tout en gardant leurs méthodes structurelles nommées existantes et leur comportement ordinaire de propriétés non numériques

Couverture

Cette interface expose les collections d'enfants courantes de formulaires et de propriétés ainsi que des clones indépendants de listes d'enfants

La création générale de nœuds de templates/formulaires, le clonage récursif de nœuds, l'insertion et le retrait d'arbres enfants et les liaisons supplémentaires de classes de nœuds restent des travaux distincts

Structure transactionnelle du Data DOM XFA · Runtime de widgets XFA