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 pathSignificado
xfa.datasetsO nó do packet datasets, ou null quando ausente
xfa.datasets.data e $dataA raiz de dados sob o packet datasets
$recordA primeira raiz de record sob data no modelo atual de processamento não record
dataGroupUm elemento de dados contendo elementos filhos, incluindo um grupo explicitamente declarado vazio
dataValueUm elemento de dados carregando um valor
formNode.dataNodeO 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