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łonek | Zachowanie |
|---|---|
length | Bieżą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...of | Czyta 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ą