Colecciones vivas de hijos XFA
Los eventos JavaScript y FormCalc pueden inspeccionar los nodos hijos actuales de un nodo de formulario o de propiedades a través de su propiedad nodes de solo lectura
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);
Leer los hijos actuales
| Miembro | Comportamiento |
|---|---|
length | Número actual de nodos hijos |
item(index) | Hijo actual en ese índice de base cero, o null para un índice negativo, no entero o fuera de rango |
namedItem(name) | Primer hijo actual con ese nombre literal, o null cuando ningún hijo empareja |
nodes[index] | El mismo nodo actual que item(index) |
for...of | Lee los nodos hijos en su orden actual |
clone() | Crea una lista de consultas independiente que referencia los hijos actuales |
La colección resuelve a su propietario a través del grafo de eventos actual en cada lectura, incluida una colección retenida por un script object a través de eventos
Las colecciones existentes reflejan las adiciones y eliminaciones de instancias repetidas y la creación implícita de propiedades; las instancias repetidas separadas mantienen hijos de propiedades y valores separados
Una colección retenida cuyo propietario fue eliminado lanza un error en lugar de apuntar a una instancia superviviente o de reemplazo
Acceso desde FormCalc
FormCalc reconoce nodes como una propiedad de colección de hijos en nodos de formularios, propiedades y del Data DOM
if (xfa.record.nodes.length >= 2) then
xfa.record.nodes.item(1).nodes.namedItem("amount").rawValue = "Updated"
endif
Las cadenas de miembros directas length, item(index), namedItem(name) y clone() usan los mismos nodos nativos actuales y límites de colecciones que JavaScript
Las colecciones de hijos de formularios, propiedades y del Data DOM soportan lecturas directas nodes[index] tanto en JavaScript como en FormCalc
Los índices de colecciones son de base cero; for...of sigue siendo sintaxis JavaScript
Las escrituras a través de una referencia de colección de FormCalc actualizan el valor de datos realmente enlazado y retienen el aislamiento de instancias repetidas; los valores confirmados sobreviven al guardado XDP, a la recarga del runtime y a la generación nativa de appearances PDF
Índices numéricos del Data DOM
const rows = xfa.record.nodes;
rows[1].nodes[0].rawValue = "Updated";
Las claves de enteros no negativos canónicas como "0" y "1" resuelven el hijo actual del Data DOM y devuelven null fuera de la colección; las claves no canónicas como "01", "-0" y "1.0" no son alias de entradas numéricas
index in nodes de JavaScript comprueba el recuento actual de hijos, y la asignación directa, la eliminación o la redefinición de una entrada numérica canónica lanza TypeError
Las mismas restricciones de entradas numéricas se aplican dentro de una función de script object que retiene la colección en estado léxico, así como cuando otro evento lee una colección devuelta por esa función
Use los métodos estructurales existentes del Data DOM para reordenar o eliminar hijos; una colección retenida por un script object lee el grafo de eventos actual tras cada edición confirmada y tras el rollback
Clones independientes
Una lista de hijos clonada usa el almacenamiento independiente descrito en Colecciones de nodos de consultas XFA; sus métodos append, insert y remove cambian ese almacenamiento independiente
Escribir un nodo referenciado por cualquiera de las listas cambia el nodo nativo real, y los valores confirmados y las anulaciones de propiedades persisten a través del XDP guardado y de la generación nativa de appearances PDF
Las colecciones de hijos del Data DOM también proporcionan clone() con almacenamiento de entradas independiente; sus métodos estructurales existentes append, insert y remove siguen mutando el árbol de datos nativo
Transacciones y límites
Los objetos de colecciones vivas y los clones independientes comparten los límites de asignación de colecciones de eventos, las comprobaciones de operaciones y el plazo de la transacción
Un error de evento no capturado o un fallo de presupuesto restaura juntos los valores nativos, las instancias repetidas, el estado de scripts retenido, el almacenamiento de listas independientes y el estado del journal
Las colecciones vivas de formularios y propiedades son de solo lectura; la asignación directa, la eliminación, la redefinición de propiedades, los cambios de prototype y prevenir extensiones lanzan un error
Las colecciones del Data DOM rechazan la escritura, eliminación y redefinición de entradas numéricas canónicas mientras retienen sus métodos estructurales con nombre existentes y el comportamiento ordinario de propiedades no numéricas
Cobertura
Esta interfaz expone las colecciones vivas actuales de hijos de formularios y propiedades y los clones independientes de listas de hijos
La creación general de nodos de template/formularios, el clonado recursivo de nodos, la inserción y eliminación de árboles hijos y los enlaces adicionales de clases de nodos siguen siendo trabajo aparte
Estructura transaccional del Data DOM XFA · Runtime de widgets XFA