Data DOM XFA nativo
La ejecución general con EnableJavaScript expone el árbol de datasets nativos del documento a través de las rutas de resolvedor xfa.datasets, $data y $record y de los accesores 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, recorrido de padres, predicados y resolución a nivel de nodo
Raíces y clases
| Objeto o ruta | Significado |
|---|---|
xfa.datasets | El nodo del paquete datasets, o null cuando no existe |
xfa.datasets.data y $data | La raíz de datos bajo el paquete datasets |
$record | La primera raíz de registro 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 data binding presente |
El atributo dataNode del namespace de datos XFA puede seleccionar explícitamente la clase de un grupo o de un valor; los prefijos de namespace se resuelven en lugar de exigir una ortografía concreta del prefijo
Lecturas y escrituras
Un dataValue expone value como un alias escribible de rawValue; ambos accesores 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 al instante las lecturas de los campos enlazados dentro del mismo script; la publicación nativa escribe el nodo de datos real
Las propiedades de valores escalares materializadas sincronizan su contenido nativo de formulario tras escrituras de campo o de datos, incluidos los alias con 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 correctas conservan sus cambios en el XDP guardado
Los campos de formulario con bind match=none retienen 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 las ocurrencias hermanas
Los valores de datos comparten los presupuestos de Unicode, tamaño de valor y ejecución con el host de eventos del formulario; 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 sus valores; la publicación nativa aporta identidades reales para los nodos nuevos, permitiendo que los script objects retengan handles de datos entre eventos posteriores
Las referencias de datos retenidas siguen el movimiento por identidad; usar una referencia después de que su grupo se haya eliminado hace fallar el evento, y el rollback en runtime restaura el orden de ocurrencias nativo, los valores y los contadores de script objects
Los instance managers retenidos por script objects resuelven el ámbito actual, incluidos los managers cuyo recuento inicial de ocurrencias era cero
Contenido XML nativo
Los nodos datasets, dataGroup y dataValue exponen loadXML y saveXML con parsing nativo, actualización del grafo en el mismo script y publicación transaccional
Las importaciones XML preservan comentarios, instrucciones de procesamiento, CDATA, namespaces expandidos y nombres Unicode, manteniendo los nodos de no texto fuera de la selección de hijos ordinaria del Data DOM y de los valores visibles de los campos
Los valores importados sincronizan de inmediato las lecturas de los campos enlazados, incluidos los campos cuyo dataRef existente selecciona un sufijo distinto o cuyo objetivo previamente sin resolver está ahora disponible
Transacciones y llamadores de nivel inferior
TXFAWidgetRuntime construye los bindings del dominio de datos, enlaza los campos del formulario a valores de datos nativos, aplica las escrituras de datos y los bindings de identidad nuevos, y restaura el estado exacto del 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 de datos virtual a su identidad de datos nativa publicada; las aplicaciones de nivel inferior deben aplicar las mutaciones de datos y los bindings de identidad devueltos de forma transaccional
Cobertura restante del modelo de objetos
La navegación por ventanas de registros, la creación y el reparentado 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; las mutaciones de instancias adicionales con binding explícito requieren más integración de binding
APIs relacionadas
Live SOM Paths, FormCalc References, HPDFXFAExecuteJavaScriptEvent y Interactive XFA Runtime