Resolução viva de caminhos SOM XFA
A execução geral com EnableJavaScript fornece o mesmo resolver vivo de formulários a resolveNode/resolveNodes ao nível de nós, xfa.resolveNode/xfa.resolveNodes e acessores FormCalc
A resolução segue as ocorrências repetidas atuais imediatamente após inserção, remoção ou movimento de instâncias; transações de runtimes bem-sucedidas persistem escritas selecionadas de campos nos alvos nativos de dados delas e no XDP guardado
Caminhos e ocorrências
| Caminho | Seleção |
|---|---|
row[1].cell | A segunda linha e a célula selecionada dela |
row[*].cell | A célula selecionada em todas as linhas |
$form.main.row.cell | A primeira linha e a primeira célula através de um caminho absoluto |
row[-1].cell | A linha que precede a ocorrência inferida |
row[+1].cell | A linha que segue a ocorrência inferida |
main..cell[*] | Células irmãs correspondentes no primeiro ramo descendente |
main.* | Todos os filhos diretos pela ordem do documento |
main.#field[name='target'] | Campos selecionados por um predicado de propriedades de nomes |
main.#subform[*].#field | O campo selecionado sob cada subform, correspondendo nomes de classes |
main.part\.name | Um caminho de resolver JavaScript contendo um ponto com escape num nome de nós |
Um índice omitido seleciona uma ocorrência; um caminho absoluto usa a ocorrência zero, enquanto um caminho com âmbito toma emprestado o índice correspondente de ancestrais ou de contentores quando as estruturas têm irmãos repetidos
A inferência de índices segue níveis correspondentes de hierarquias mesmo quando nós fonte e de destino têm nomes diferentes; seletores de classes tomam emprestado o índice correspondente de ocorrências de classes
Um alvo de ocorrência única é selecionado sem exigir o índice de ocorrências de quem chama; uma ocorrência inferida em falta devolve uma lista vazia ou null em vez de selecionar silenciosamente outro âmbito
Índices relativos são offsets a partir da ocorrência inferida sem adornos e são inválidos em caminhos absolutos; expressões FormCalc de índices podem calcular uma ocorrência em runtime
Contentores sem nome são transparentes para consultas de filhos nomeados; qualificação de pais e propriedades suportadas como rawValue, name, className, index, presence e access estão disponíveis, e exportações lexicais de objetos de scripts podem ser resolvidas e atribuídas através de caminhos FormCalc
Condições
const rows = xfa.resolveNodes("main.row[*].(Number(this.cell.rawValue)>15)");
const selected = xfa.resolveNodes("main.row[*].[cell ge 20].cell");
target = Sum($.resolveNodes("row.[cell ge 20].cell"))
row[1].cell = 25
var p = Ref(row[1].cell)
p = 30
Predicados JavaScript usam .(expression) e executam com o candidato como this; predicados FormCalc usam .[expression] e resolvem campos relativos contra esse candidato
Um predicado seleciona irmãos correspondentes mesmo quando [*] é omitido; predicados JavaScript também resolvem nomes simples de campos no âmbito do candidato, e caminhos de predicados em fontes FormCalc têm de ser passados como strings de resolver entre aspas
A consulta de descendentes pesquisa pela ordem do documento por um ramo que satisfaça as restantes componentes do caminho; um ramo sem sufixo correspondente não esconde uma correspondência completa posterior
Um índice de ocorrências é local ao grupo correspondente de irmãos dele; um índice fora do intervalo termina essa pesquisa de descendentes, pelo que main..cell[1] não seleciona uma célula noutra linha quando a primeira linha tem apenas uma célula
Um wildcard precedente avalia a consulta de descendentes de forma independente para cada contexto selecionado, e um wildcard diretamente após uma raiz absoluta seleciona os filhos da raiz
Predicados JavaScript recebem os objetos xfa e event do evento atual; consulta relativa a candidatos, exceções de predicados e escritas nativas partilham a transação envolvente
Eval aninhado herda o candidato do predicado, usa variáveis e funções isoladas de cálculos e partilha respostas nativas de compilações e replay transacional com o evento envolvente
Exists(missing) e um acessor a uma ocorrência indexada inexistente devolvem 0 através de Exists; o uso ordinário de um objeto FormCalc não resolvido levanta um erro
Orçamentos e migração
Caminhos permitem no máximo 128 componentes e 65,536 unidades de código UTF-16; os índices têm de ser inteiros seguros, e travessia, predicados, compilação dinâmica e operações de instâncias partilham os orçamentos de execução de eventos
Erros de parsers, exceções de predicados e orçamentos excedidos abortam o evento e restauram valores nativos de campos, ordem de instâncias e estado de scripts através de TXFAWidgetRuntime
resolveNodes geral anterior expandia índices omitidos através de todos os ancestrais repetidos; use main.row[*].cell[*] quando todas as linhas e todas as células forem pretendidas, substituindo main.row.cell[*]
Cobertura
O resolver opera sobre objetos vivos de formulários fornecidos pelos bindings de eventos, incluindo campos, subforms, draws, grupos de exclusão, areas e objetos de scripts, o Data DOM nativo exposto através de $data e $record, e nós declarados de propriedades de templates com atributos efetivos
Escapes de nomes JavaScript são suportados por strings de resolvers; identificadores de fontes FormCalc mantêm a gramática de identificadores do compilador
APIs relacionadas
HPDFXFACompileFormCalcEvent, HPDFXFAExecuteJavaScriptEvent, Eval dinâmico, Referências FormCalc e Runtime XFA interativo