Data DOM nativo do XFA
A execução geral com EnableJavaScript expõe a tree nativa de datasets do documento através dos paths de resolvers xfa.datasets, $data e $record e dos accessors FormCalc
Nós de dados usam identidades nativas estáveis e o mesmo resolver vivo de SOM que os nós de formulários; eles suportam nomes, selectors de classes, seleção de ocorrências, traversal de pais, predicados e resolução de nível de nós
Raízes e classes
| Objeto ou path | Significado |
|---|---|
xfa.datasets | O nó do packet datasets, ou null quando ausente |
xfa.datasets.data e $data | A raiz de dados sob o packet datasets |
$record | A primeira raiz de record sob data no modelo atual de processamento não record |
dataGroup | Um elemento de dados contendo elementos filhos, incluindo um grupo explicitamente declarado vazio |
dataValue | Um elemento de dados carregando um valor |
formNode.dataNode | O nó vinculado ao campo ou subform, ou null quando não há binding de dados presente |
O atributo dataNode no namespace de dados do XFA pode selecionar explicitamente a classe de um grupo ou valor; prefixes de namespaces são resolvidos, em vez de exigir uma grafia específica de prefixo
Leituras e escritas
Um dataValue expõe value como um alias gravável de rawValue; ambos os accessors atualizam a mesma célula vinculada de dados e o nó nativo de dados
const value = xfa.resolveNode("$record.row[1].cell");
value.rawValue = "25";
target.rawValue = xfa.resolveNode("main.row[1].cell").rawValue;
$record.row[1].cell = 25
target = row[1].cell
var p = Ref($record.row[1].cell)
p = 30
Escritas em campos vinculados atualizam imediatamente o valor de dados correspondente, e escritas em valores de dados atualizam imediatamente as leituras de campos vinculados dentro do mesmo script; a publicação nativa grava o nó real de dados
Propriedades materializadas de valores escalares sincronizam o conteúdo nativo de formulários delas após escritas em campos ou dados, incluindo aliases de dados compartilhados e a publicação de dados de instâncias repetidas novas
Elementos de dados sem um campo de formulário vinculado permanecem acessíveis e graváveis; transações bem-sucedidas preservam as mudanças deles no XDP salvo
Campos de formulários com bind match=none retêm os defaults do template e armazenam edições no valor do Form DOM da ocorrência própria deles; eles não expõem nó de dados sintético e não modificam ocorrências irmãs
Valores de dados compartilham os orçamentos de Unicode, tamanho de valores e execução com o event host de formulários; nós de grupos fornecem acesso estrutural, em vez de um valor raw gravável
Instâncias repetidas e referências retidas
Inserção, movimentação e remoção de instâncias de formulários atualizam o Data DOM vivo correspondente durante o mesmo script; linhas novas com binding implícito expõem os defaults do template através dos nós de dados delas antes da publicação
Um prototype de ocorrência zero pode criar o primeiro grupo de dados e valores dele; a publicação nativa fornece identidades reais para os nós novos, permitindo que objetos de scripts retenham handles de dados entre eventos subsequentes
Referências retidas de dados seguem a movimentação por identidade; usar uma referência depois que o grupo dela foi removido faz o evento falhar, e o rollback do runtime restaura a ordem nativa de ocorrências, valores e contadores de objetos de scripts
Instance managers retidos por objetos de scripts resolvem o escopo atual, incluindo managers cuja contagem inicial de ocorrências era zero
Conteúdo XML nativo
Nós de datasets, dataGroup e dataValue expõem loadXML e saveXML com parsing nativo, atualizações de grafo no mesmo script e publicação transacional
Imports de XML preservam comentários, processing instructions, CDATA, namespaces expandidos e nomes Unicode, mantendo nós não texto fora da seleção comum de filhos do Data DOM e dos valores visíveis de campos
Valores importados sincronizam imediatamente as leituras de campos vinculados, incluindo campos cujo dataRef existente seleciona um sufixo diferente ou cujo alvo anteriormente não resolvido agora está disponível
Transações e chamadores de nível mais baixo
TXFAWidgetRuntime constrói bindings do domínio de dados, vincula campos de formulários a valores nativos de dados, aplica escritas de dados e bindings de identidades novas, e restaura o estado exato do XDP após falha do engine ou da publicação nativa
Chamadores de eventos de nível mais baixo usam TXFAEventBindingDomain e os campos DataIdentity e DataBindingEnabled de TXFAEventBinding para fornecer relações equivalentes de objetos
A action xeakBindDataIdentity vincula um handle virtual novo de dados à identidade nativa de dados publicada dele; aplicações de nível mais baixo precisam aplicar mutações de dados e bindings de identidades retornados transacionalmente
Cobertura restante do modelo de objetos
Navegação de janelas de records, criação e reparenting independentes de nós de dados, atributos arbitrários de dados e edição completa de nós de propriedades de templates permanecem alvos de integração separados
O espelhamento de instâncias segue o comportamento existente de instance managers de bindings implícitos de dados; mutações adicionais de instâncias de bindings explícitos exigem integração adicional de bindings
APIs relacionadas
Paths SOM vivos, Referências FormCalc, HPDFXFAExecuteJavaScriptEvent e Runtime XFA interativo