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
| Membro | Comportamento |
|---|---|
length | Contagem 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...of | Lê 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