XFA Live Child Collections

Zdarzenia JavaScript i FormCalc mogą przeglądać bieżące węzły potomne węzła formularza albo właściwości przez jego property nodes tylko do odczytu

const field = xfa.resolveNode("row[1].amount");
const children = field.font.nodes;
const snapshot = children.clone();
field.font.fill.color.value = "192,48,96";
const fill = children.item(0);

Reading current children

CzłonekZachowanie
lengthBieżąca liczba węzłów potomnych
item(index)Bieżący potomek na tym indeksie opartym na zerze, albo null dla indeksu ujemnego, niecałkowitego albo poza zakresem
namedItem(name)Pierwszy bieżący potomek o tej literalnej nazwie, albo null, gdy żadne dziecko nie pasuje
nodes[index]Ten sam bieżący węzeł co item(index)
for...ofCzyta węzły potomne w ich bieżącej kolejności
clone()Tworzy niezależną listę zapytania referencjonującą bieżące dzieci

Kolekcja rozpoznaje swojego właściciela przez bieżący graf zdarzenia przy każdym odczycie, łącznie z kolekcją zachowaną przez obiekt skryptowy między zdarzeniami

Istniejące kolekcje odzwierciedlają dodawanie i usuwanie powtarzalnych instancji oraz niejawne tworzenie właściwości; oddzielne powtarzalne wystąpienia zachowują odrębnych potomków właściwości i wartości

Zachowana kolekcja, której właściciel został usunięty, podnosi błąd zamiast celować w przeżywające albo zastępcze wystąpienie

FormCalc access

FormCalc rozpoznaje nodes jako property kolekcji potomków na węzłach formularza, właściwości i Data DOM

if (xfa.record.nodes.length >= 2) then
  xfa.record.nodes.item(1).nodes.namedItem("amount").rawValue = "Updated"
endif

Bezpośrednie łańcuchy członków length, item(index), namedItem(name) i clone() używają tych samych bieżących natywnych węzłów i limitów kolekcji co JavaScript

Kolekcje potomków formularza, właściwości i Data DOM wspierają bezpośrednie odczyty nodes[index] i w JavaScript, i w FormCalc

Indeksy kolekcji są oparte na zerze; for...of pozostaje składnią JavaScript

Zapisy przez referencję kolekcji FormCalc aktualizują rzeczywistą związaną wartość danych i zachowują izolację powtarzalnych instancji; zacommitowane wartości przetrwają zapis XDP, przeładowanie runtime i natywne generowanie wyglądów PDF

Data DOM numeric indices

const rows = xfa.record.nodes;
rows[1].nodes[0].rawValue = "Updated";

Kanoniczne nieujemne klucze całkowite, takie jak "0" i "1", rozpoznają bieżącego potomka Data DOM i zwracają null poza kolekcją; niekanoniczne klucze, takie jak "01", "-0" i "1.0", nie aliasują wpisów numerycznych

JavaScript index in nodes sprawdza bieżącą liczbę potomków, a bezpośrednie przypisanie, usunięcie albo przedefiniowanie kanonicznego wpisu numerycznego podnosi TypeError

Te same ograniczenia wpisów numerycznych stosują się wewnątrz funkcji obiektu skryptowego zachowującej kolekcję w stanie leksykalnym, jak również gdy inne zdarzenie czyta kolekcję zwróconą przez tę funkcję

Użyj istniejących metod strukturalnych Data DOM, aby przestawiać albo usuwać potomków; kolekcja zachowana przez obiekt skryptowy czyta bieżący graf zdarzenia po każdym zacommitowanym edycie i po rollbacku

Independent clones

Sklonowana lista potomków używa niezależnego storage opisanego w XFA Query Node Collections; jej metody append, insert i remove zmieniają ten niezależny storage

Zapis węzła referencjonowanego przez którąkolwiek listę zmienia rzeczywisty natywny węzeł, a zacommitowane wartości i nadpisania właściwości utrwala się przez zapisany XDP i natywne generowanie wyglądów PDF

Kolekcje potomków Data DOM też dostarczają clone() z niezależnym storage wpisów; ich istniejące strukturalne metody append, insert i remove nadal mutują natywne drzewo danych

Transactions and limits

Żywe obiekty kolekcji i niezależne klony dzielą limity alokacji kolekcji zdarzenia, sprawdzania operacji i deadline transakcji

Nieprzechwycony błąd zdarzenia albo awaria budżetu przywraca natywne wartości, powtarzalne wystąpienia, zachowany stan skryptów, niezależne storage list i stan dziennika razem

Żywe kolekcje formularza i właściwości są tylko do odczytu; bezpośrednie przypisanie, usunięcie, przedefiniowanie właściwości, zmiany prototypu i uniemożliwianie rozszerzeń podnosi błąd

Kolekcje Data DOM odrzucają zapis, usunięcie i przedefiniowanie kanonicznych wpisów numerycznych, zachowując istniejące nazwane metody strukturalne i zwykłe zachowanie właściwości nienumerycznych

Coverage

Ten interfejs odsłania bieżące kolekcje potomków formularza i właściwości oraz niezależne klony list potomków

Ogólne tworzenie węzłów szablonu/formularza, rekurencyjne klonowanie węzłów, wstawianie i usuwanie drzew potomków oraz dodatkowe powiązania klas węzłów pozostają odrębną pracą

Transactional XFA Data DOM Structure · Runtime widgetów XFA