Coleções vivas de filhos do XFA

Eventos JavaScript e FormCalc podem inspecionar os nós filhos atuais de um nó de formulário ou de propriedades através da propriedade read-only nodes dele

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

Lendo filhos atuais

MembroComportamento
lengthContagem atual de nós filhos
item(index)Filho atual naquele índice com base zero, ou null para índice negativo, não inteiro ou fora da faixa
namedItem(name)Primeiro filho atual com aquele nome literal, ou null quando nenhum filho corresponde
nodes[index]O mesmo nó atual de item(index)
for...ofLê os nós filhos na ordem atual deles
clone()Cria uma lista de consultas independente referenciando os filhos atuais

A coleção resolve seu dono pelo grafo atual de eventos em cada leitura, incluindo uma coleção retida por um objeto de script entre eventos

Coleções existentes refletem adições e remoções de instâncias repetidas e criação implícita de propriedades; instâncias repetidas separadas mantêm filhos e valores de propriedades separados

Uma coleção retida cujo dono foi removido dispara um erro, em vez de mirar uma instância sobrevivente ou de substituição

Acesso pelo FormCalc

O FormCalc reconhece nodes como uma propriedade de coleção de filhos em nós de formulários, propriedades e Data DOM

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

Cadeias diretas de membros length, item(index), namedItem(name) e clone() usam os mesmos nós nativos atuais e limites de coleções do JavaScript

Coleções de filhos de formulários, propriedades e Data DOM suportam leituras diretas nodes[index] tanto em JavaScript quanto em FormCalc

Índices de coleções têm base zero; for...of permanece sintaxe JavaScript

Escritas através de uma referência de coleção FormCalc atualizam o valor real de dados vinculado e retêm o isolamento de instâncias repetidas; valores commitados sobrevivem ao saving de XDP, reload de runtime e geração nativa de aparências PDF

Índices numéricos do Data DOM

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

Chaves canônicas de inteiros não negativos como "0" e "1" resolvem o filho atual do Data DOM e retornam null fora da coleção; chaves não canônicas como "01", "-0" e "1.0" não são aliases de entradas numéricas

O index in nodes do JavaScript checa a contagem atual de filhos, e atribuição, deleção ou redefinição diretas de uma entrada numérica canônica disparam TypeError

As mesmas restrições de entradas numéricas se aplicam dentro de uma função de objeto de script que retém a coleção em estado lexical, bem como quando outro evento lê uma coleção retornada por aquela função

Use os métodos estruturais existentes do Data DOM para reordenar ou remover filhos; uma coleção retida por um objeto de script lê o grafo atual de eventos após cada edição commitada e após o rollback

Clones independentes

Uma lista de filhos clonada usa o armazenamento independente descrito em Coleções de nós de consultas do XFA; os métodos append, insert e remove dela mudam aquele armazenamento independente

Escrever num nó referenciado por qualquer uma das listas muda o nó nativo real, e valores commitados e overrides de propriedades persistem através do XDP salvo e da geração nativa de aparências PDF

Coleções de filhos do Data DOM também fornecem clone() com armazenamento independente de entradas; os métodos estruturais existentes append, insert e remove delas continuam mutando a tree nativa de dados

Transações e limites

Objetos de coleções vivas e clones independentes compartilham os limites de alocação de coleções do evento, as checagens de operações e o deadline transacional

Um erro de evento não capturado ou falha de orçamento restaura juntos os valores nativos, instâncias repetidas, estado de scripts retido, armazenamento de listas independentes e estado do journal

Coleções vivas de formulários e propriedades são read-only; atribuição direta, deleção, redefinição de propriedades, mudanças de prototype e impedir extensões disparam um erro

Coleções do Data DOM rejeitam escrita, deleção e redefinição de entradas numéricas canônicas, retendo os métodos estruturais nomeados existentes delas e o comportamento comum de propriedades não numéricas

Cobertura

Esta interface expõe coleções atuais de filhos de formulários e propriedades e clones independentes de listas de filhos

Criação geral de nós de templates/formulários, clonagem recursiva de nós, inserção e remoção de trees de filhos e bindings adicionais de classes de nós permanecem trabalho separado

Estrutura transacional do Data DOM do XFA · Runtime de widgets XFA