XFA choice item scripting

Unidade: HPDFXFARuntime

Um campo com ui.choiceList expõe métodos de itens de escolhas durante a execução nativa de eventos JavaScript e FormCalc, incluindo instâncias repetidas de campos e aliases retidos por objetos de scripts

Métodos e propriedades

MembroComportamento
lengthNúmero só de leitura de itens de exportação atuais
selectedIndexPrimeiro índice selecionado com base zero, ou -1 quando nada está selecionado; atribuir qualquer inteiro negativo limpa a seleção, enquanto um valor não negativo fora do intervalo ou não inteiro lança uma exceção antes de a alterar
getDisplayItem(index)Texto de apresentação no índice, ou null quando o índice é inválido
getSaveItem(index)Texto de exportação no índice, ou null quando o índice é inválido
boundItem(display)Texto de exportação para o primeiro texto de apresentação exatamente correspondente, ou null quando nenhum texto de apresentação corresponde
getItemState(index)Se o item está selecionado; um índice inválido lança uma exceção
setItemState(index, selected)Atualiza a seleção do item; selecionar um item substitui a seleção anterior num campo de seleção única e preserva outros índices selecionados num campo de seleção múltipla
addItem(display, bound)Acrescenta um item sem alterar os itens selecionados existentes; omitir o segundo argumento usa uma string vazia de exportações
deleteItem(index)Elimina um item e desloca índices posteriores mantendo a identidade dos aliases de itens sobreviventes; devolve false para um índice inválido
clearItems()Remove itens atuais e limpa a seleção; uma lista de runtime explicitamente vazia permanece vazia após gravação e recarregamento
setItems(text, columns)Substitui os itens atuais a partir de colunas separadas por vírgulas e limpa a seleção; columns tem por defeito 1, uma linha de uma coluna fornece texto tanto de apresentação como de exportação, e uma linha mais comprida usa a primeira coluna dela como texto de apresentação e a última como texto de exportação; devolve false se a contagem de colunas é inválida ou não divide a contagem de campos de entrada

Os índices são inteiros e nunca são coagidos a partir de strings; métodos de itens exigem as contagens documentadas de argumentos deles, com o segundo argumento opcional aceite por addItem e setItems

Valores de itens preservam Unicode, espaços iniciais e finais, exportações explicitamente vazias e quebras de linhas; carateres de controlo XML inválidos e surrogates UTF-16 emparelhados a incompleto são rejeitados antes da mutação de listas

Estado imediato e aliases

Itens novos são imediatamente visíveis através de métodos de itens e do Property DOM, e o alias de um item eliminado não pode redirecionar para um item sobrevivente que se mova para o índice eliminado

Substituir ou limpar a lista cria identidades de substituição distintas; aliases retidos de objetos de scripts para itens removidos falham em leituras e escritas posteriores, enquanto aliases sobreviventes continuam a endereçar o mesmo item através de execuções de eventos

Uma atribuição direta de rawValue, uma escrita vinculada ao Data DOM, um commit público de valores de widgets ou uma mutação escalar de exportações de itens invalida índices explícitos em cache, incluindo atribuições que preservem a mesma string bruta

Persistência e seleção exata

SaveToBytes escreve os itens reais de formulários por instância e os valores sincronizados deles; alterar uma instância repetida preserva outras instâncias e os âmbitos de dados delas

Exportações duplicadas e vazias podem ser selecionadas por índices exatos através da API de itens; o campo de formulários guardado regista os índices canónicos e o valor bruto correspondente em atributos opcionais no namespace urn:hotpdf:xfa:runtime

Itens standard XFA e nós de valores permanecem presentes independentemente destes atributos opcionais; escritas posteriores de valores invalidam os atributos, para que índices obsoletos não possam selecionar a exportação duplicada errada

O consumidor nativo de PDFs escreve pares correspondentes de /Opt de exportação/apresentação, índices exatos de /I e strings ou arrays de /V, e constrói aparências a partir das etiquetas de apresentação selecionadas

Transações e limites

Alterações de itens participam na transação existente de eventos e no journal de scripts; uma falha nativa de limites de valores, cancelamento de quem chama ou exceção de eventos não tratada restaura o XDP guardado, o estado lexical de scripts e os bindings antes de uma repetição posterior

Alocações de nós, colunas de entrada, valores UTF-8, payloads de operações XML, travessia nativa de propriedades e clonagem mantêm os orçamentos configurados de scripts e de runtimes e as verificações de cancelamento

Exemplo

var list = this.parent.choice;
list.clearItems();
list.addItem("Display A", "same");
list.addItem("Display B", "same");
list.selectedIndex = 1;
if (list.getDisplayItem(list.selectedIndex) !== "Display B")
    throw new Error("Unexpected selected label");

Para variáveis FormCalc que retêm um campo em vez do valor escalar dele, use var list = Ref($.parent.choice) antes de chamar métodos de itens

O vocabulário de métodos e os argumentos de colunas seguem a Adobe Designer Scripting Reference; o runtime usa semântica de substituição para setItems, conforme descrito no suporte de scripting de formulários HTML5 da Adobe