Data DOM XFA nativo
La ejecución general con EnableJavaScript expone el árbol de datasets nativos del documento mediante xfa.datasets, las rutas de resolvedor $data y $record, y los accessors de FormCalc
Los nodos de datos usan identidades nativas estables y el mismo resolvedor SOM en vivo que los nodos de formulario; soportan nombres, selectores de clase, selección de ocurrencias, traversal de padres, predicados y resolución a nivel de nodo
Raíces y clases
| Objeto o ruta | Significado |
|---|---|
xfa.datasets | El nodo del packet datasets, o null cuando está ausente |
xfa.datasets.data y $data | La raíz de datos bajo el packet datasets |
$record | La primera raíz de record bajo data en el modelo de procesamiento no-record actual |
dataGroup | Un elemento de datos que contiene elementos hijos, incluido un grupo vacío declarado explícitamente |
dataValue | Un elemento de datos que porta un valor |
formNode.dataNode | El nodo enlazado al campo o subform del formulario, o null cuando no hay binding de datos presente |
El atributo dataNode en el namespace de datos XFA puede seleccionar explícitamente la clase de un grupo o valor; los prefijos de namespace se resuelven en lugar de exigir una ortografía de prefijo particular
Lecturas y escrituras
Un dataValue expone value como un alias escribible de rawValue; ambos accessors actualizan la misma celda de datos enlazada y el mismo nodo de datos nativo
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
Las escrituras en campos enlazados actualizan de inmediato el valor de datos correspondiente, y las escrituras en valores de datos actualizan de inmediato las lecturas de campos enlazados dentro del mismo script; la publicación nativa escribe el nodo de datos real
Las propiedades de valor escalar materializadas sincronizan su contenido nativo de formulario después de escrituras de campo o de datos, incluidos los alias de datos compartidos y la publicación de datos de nuevas instancias repetidas
Los elementos de datos sin campo de formulario enlazado siguen siendo accesibles y escribibles; las transacciones exitosas conservan sus cambios en el XDP guardado
Los campos de formulario con bind match=none conservan los valores por defecto de la plantilla y almacenan las ediciones en el valor del Form DOM de su propia ocurrencia; no exponen ningún nodo de datos sintético y no modifican ocurrencias hermanas
Los valores de datos comparten con el host de eventos de formulario los presupuestos de Unicode, tamaño de valor y ejecución; los nodos de grupo ofrecen acceso estructural en lugar de un valor crudo escribible
Instancias repetidas y referencias retenidas
La inserción, el movimiento y la eliminación de instancias de formulario actualizan el Data DOM en vivo correspondiente durante el mismo script; las nuevas filas con binding implícito exponen los valores por defecto de la plantilla a través de sus nodos de datos antes de la publicación
Un prototipo de ocurrencia cero puede crear su primer grupo de datos y valores; la publicación nativa suministra identidades reales para los nodos nuevos, permitiendo que los script objects retengan handles de datos a través de eventos posteriores
Las referencias de datos retenidas siguen el movimiento por identidad; usar una referencia después de que su grupo fue eliminado hace fallar el evento, y el rollback del runtime restaura el orden nativo de ocurrencias, los valores y los contadores de script objects
Los instance managers retenidos por script objects resuelven el ámbito actual, incluidos los managers cuyo conteo inicial de ocurrencias era cero
Contenido XML nativo
Los nodos datasets, dataGroup y dataValue exponen loadXML y saveXML con parsing nativo, actualizaciones de grafo en el mismo script y publicación transaccional
Las importaciones XML preservan comentarios, processing instructions, CDATA, namespaces expandidos y nombres Unicode, manteniendo los nodos de no texto fuera de la selección ordinaria de hijos del Data DOM y de los valores visibles de campos
Los valores importados sincronizan de inmediato las lecturas de campos enlazados, incluidos los campos cuyo dataRef existente selecciona un sufijo distinto o cuyo destino previamente sin resolver ahora está disponible
Transacciones y llamadores de nivel inferior
TXFAWidgetRuntime construye los bindings del dominio de datos, enlaza campos de formulario a valores de datos nativos, aplica escrituras de datos y nuevos bindings de identidad, y restaura el estado exacto de XDP tras un fallo del engine o de la publicación nativa
Los llamadores de eventos de nivel inferior usan TXFAEventBindingDomain y los campos DataIdentity y DataBindingEnabled de TXFAEventBinding para suministrar relaciones de objetos equivalentes
La acción xeakBindDataIdentity enlaza un nuevo handle virtual de datos a su identidad de datos nativa publicada; las aplicaciones de nivel inferior deben aplicar las mutaciones de datos devueltas y los bindings de identidad de forma transaccional
Cobertura restante del modelo de objetos
La navegación de ventana de records, la creación y reubicación independiente de nodos de datos, los atributos de datos arbitrarios y la edición completa de nodos de propiedades de plantilla siguen siendo objetivos de integración separados
El espejo de instancias sigue el comportamiento existente del instance manager de binding implícito de datos; las mutaciones adicionales de instancias con binding explícito requieren más integración de bindings
APIs relacionadas
Rutas SOM en vivo, Referencias de FormCalc, HPDFXFAExecuteJavaScriptEvent y Runtime XFA interactivo