Data DOM nativo XFA
A execução geral com EnableJavaScript expõe a árvore nativa de datasets do documento através de caminhos de resolver xfa.datasets, $data e $record e acessores FormCalc
Nós de dados usam identidades nativas estáveis e o mesmo resolver vivo SOM que nós de formulários; eles suportam nomes, seletores de classes, seleção de ocorrências, travessia de pais, predicados e resolução ao nível de nós
Raízes e classes
| Objeto ou caminho | Significado |
|---|---|
xfa.datasets | O nó do pacote de datasets, ou null quando ausente |
xfa.datasets.data e $data | A raiz de dados sob o pacote de datasets |
$record | A primeira raiz de registos 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 transportando um valor |
formNode.dataNode | O nó vinculado ao campo ou subform de formulários, ou null quando não há binding de dados presente |
O atributo dataNode no namespace de dados XFA pode selecionar explicitamente a classe de um grupo ou de um valor; prefixos de namespaces são resolvidos em vez de exigir uma grafia particular de prefixos
Leituras e escritas
Um dataValue expõe value como um alias gravável de rawValue; ambos os acessores 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 vinculadas de campos atualizam imediatamente o valor de dados correspondente, e escritas de valores de dados atualizam imediatamente leituras de campos vinculados dentro do mesmo script; a publicação nativa escreve o nó real de dados
Propriedades materializadas de valores escalares sincronizam o conteúdo nativo de formulários delas após escritas de campos ou de dados, incluindo aliases de dados partilhados e publicação nova de dados de instâncias repetidas
Elementos de dados sem campo de formulários vinculado permanecem acessíveis e graváveis; transações bem-sucedidas preservam as alterações deles no XDP guardado
Campos de formulários com bind match=none mantêm defaults de templates e guardam edições no valor do Form DOM da ocorrência própria deles; eles não expõem nó sintético de dados nenhum e não alteram ocorrências irmãs
Valores de dados partilham orçamentos de Unicode, de tamanhos de valores e de execução com o host de eventos de formulários; nós de grupos fornecem acesso estrutural em vez de um valor bruto gravável
Instâncias repetidas e referências retidas
Inserção, movimento e remoção de instâncias de formulários atualizam o Data DOM vivo correspondente durante o mesmo script; linhas novas implicitamente vinculadas expõem defaults de templates através dos nós de dados delas antes da publicação
Um protótipo de ocorrência zero pode criar o primeiro grupo e valores de dados dele; a publicação nativa fornece identidades reais para os nós novos, permitindo que objetos de scripts retenham handles de dados através de eventos subsequentes
Referências retidas de dados seguem movimentos por identidade; usar uma referência depois de o grupo dela ser removido faz falhar o evento, e o rollback do runtime restaura a ordem nativa de ocorrências, valores e contadores de objetos de scripts
Gestores de instâncias retidos por objetos de scripts resolvem o âmbito atual, incluindo gestores 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 grafos no mesmo script e publicação transacional
Importações XML preservam comentários, processing instructions, CDATA, namespaces expandidos e nomes Unicode enquanto mantêm nós que não são de texto fora da seleção ordinária de filhos do Data DOM e dos valores visíveis de campos
Valores importados sincronizam imediatamente leituras de campos vinculados, incluindo campos cujo dataRef existente seleciona um sufixo diferente ou cujo alvo previamente não resolvido agora está disponível
Transações e quem chama a nível inferior
TXFAWidgetRuntime constrói bindings de domínios de dados, liga campos de formulários a valores nativos de dados, aplica escritas de dados e bindings novos de identidades, e restaura o estado exato de XDP após falha do motor ou da publicação nativa
Quem chama a eventos a um nível inferior usa TXFAEventBindingDomain e os campos DataIdentity e DataBindingEnabled de TXFAEventBinding para fornecer relações equivalentes de objetos
A ação xeakBindDataIdentity vincula um handle novo virtual de dados à identidade nativa de dados publicada dele; aplicações de nível inferior têm de aplicar mutações devolvidas de dados e bindings de identidades transacionalmente
Cobertura restante do modelo de objetos
Navegação de janelas de registos, criação autónoma e reparenting de nós de dados, atributos arbitrários de dados e edição completa de nós de propriedades de templates continuam a ser alvos separados de integração
O espelhamento de instâncias segue o comportamento existente de gestores de instâncias de bindings implícitos de dados; mutações adicionais de instâncias de bindings explícitos exigem mais integração de bindings
APIs relacionadas
Caminhos SOM vivos, Referências FormCalc, HPDFXFAExecuteJavaScriptEvent e Runtime XFA interativo