Colecciones de hijos vivos XFA
Los eventos de JavaScript y FormCalc pueden inspeccionar los nodos hijos actuales de un nodo de formulario o de propiedad 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);
Lectura de hijos actuales
| Miembro | Comportamiento |
|---|---|
length | Número actual de nodos hijos |
item(index) | Hijo actual en ese índice 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 coincide |
nodes[index] | El mismo nodo actual que item(index) |
for...of | Lee los nodos hijos en su orden actual |
clone() | Crea una lista de consulta independiente que referencia a 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 objeto de script a través de eventos
Las colecciones existentes reflejan adiciones y eliminaciones de instancias repetidas y creación implícita de propiedades; las instancias repetidas separadas mantienen hijos de propiedad 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 formulario, de propiedad 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 de length, item(index), namedItem(name) y clone() usan los mismos nodos nativos actuales y límites de colección que JavaScript
Las colecciones de hijos de formulario, propiedad y Data DOM soportan lecturas directas de nodes[index] tanto en JavaScript como en FormCalc
Los índices de colección son base cero; for...of sigue siendo sintaxis de JavaScript
Las escrituras a través de una referencia de colección de FormCalc actualizan el valor de datos enlazado real y retienen el aislamiento de instancias repetidas; los valores confirmados sobreviven al guardado XDP, la recarga del runtime y la generación nativa de apariencias PDF
Índices numéricos del Data DOM
const rows = xfa.record.nodes;
rows[1].nodes[0].rawValue = "Updated";
Las claves enteras canónicas no negativas 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
El index in nodes de JavaScript verifica el conteo actual de hijos, y la asignación directa, eliminación o 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 objeto de script 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 objeto de script lee el grafo de eventos actual después de cada edición confirmada y después del rollback
Clones independientes
Una lista de hijos clonada usa el almacenamiento independiente descrito en Colecciones de nodos de consulta 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 la generación nativa de apariencias PDF
Las colecciones de hijos del Data DOM también proporcionan clone() con almacenamiento de entradas independiente; sus métodos estructurales existentes de append, insert y remove siguen mutando el árbol de datos nativo
Transacciones y límites
Los objetos de colección vivos y los clones independientes comparten los límites de asignación de colecciones del evento, las verificaciones de operación y el plazo de la transacción
Un error de evento no capturado o una falla de presupuesto restaura los valores nativos, las instancias repetidas, el estado de script retenido, el almacenamiento de listas independientes y el estado del journal juntos
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 prototipo 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 colecciones de hijos actuales de formularios y propiedades y clones independientes de listas de hijos
La creación general de nodos de plantilla/formulario, la clonación recursiva de nodos, la inserción y eliminación de árboles de hijos, y bindings adicionales de clases de nodos siguen siendo trabajo separado
Estructura transaccional del Data DOM XFA · Runtime de widgets XFA