XFA の生きた子コレクション
JavaScript と FormCalc のイベントは、読み取り専用の nodes プロパティを通じて、フォームノードやプロパティノードの現在の子ノードを検査できます
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);
現在の子の読み取り
| メンバー | 動作 |
|---|---|
length | 現在の子ノード数 |
item(index) | そのゼロベースインデックスの現在の子。負・非整数・範囲外のインデックスでは null |
namedItem(name) | そのリテラル名を持つ最初の現在の子。一致する子がなければ null |
nodes[index] | item(index) と同じ現在のノード |
for...of | 現在の順序で子ノードを読みます |
clone() | 現在の子を参照する、独立したクエリリストを作成します |
コレクションは、読み取りのたびに、現在のイベントグラフを通じて所有者を解決します。スクリプトオブジェクトがイベントをまたいで保持するコレクションも含みます
既存のコレクションは、繰り返しインスタンスの追加・削除と、暗黙のプロパティ作成を反映します。別々の繰り返しインスタンスは、別々のプロパティ子と値を保持します
所有者が削除された、保持されたコレクションは、生き残りや置換インスタンスを指す代わりにエラーを送出します
FormCalc からのアクセス
FormCalc は、フォーム、プロパティ、Data DOM ノード上の nodes を子コレクションプロパティとして認識します
if (xfa.record.nodes.length >= 2) then
xfa.record.nodes.item(1).nodes.namedItem("amount").rawValue = "Updated"
endif
直接的な length、item(index)、namedItem(name)、clone() のメンバーチェーンは、JavaScript と同じ現在のネイティブノードとコレクション上限を使います
フォーム、プロパティ、Data DOM の子コレクションは、JavaScript と FormCalc の両方で、直接的な nodes[index] 読み取りをサポートします
コレクションのインデックスはゼロベースです。for...of は JavaScript 構文のままです
FormCalc のコレクション参照を通じた書き込みは、実際にバインドされたデータ値を更新し、繰り返しインスタンスの分離を保持します。コミットされた値は、XDP 保存、ランタイム再ロード、ネイティブ PDF 外観生成を生き延びます
Data DOM の数値インデックス
const rows = xfa.record.nodes;
rows[1].nodes[0].rawValue = "Updated";
"0" や "1" のような正準な非負整数キーは、現在の Data DOM の子を解決し、コレクション外では null を返します。"01"、"-0"、"1.0" のような非正準キーは数値エントリのエイリアスではありません
JavaScript の index in nodes は現在の子数を検査し、正準数値エントリの直接代入、削除、再定義は TypeError を送出します
同じ数値エントリ制限は、コレクションを字句状態で保持するスクリプトオブジェクト関数内でも、別のイベントがその関数の返したコレクションを読むときでも適用されます
子の並べ替えや削除には、既存の Data DOM 構造メソッドを使ってください。スクリプトオブジェクトが保持するコレクションは、コミットされた編集の後も、ロールバックの後も、現在のイベントグラフを読みます
独立したクローン
クローンされた子リストは、XFA クエリノードコレクションで記述される独立したストレージを使います。その append、insert、remove メソッドはその独立ストレージを変更します
どちらかのリストが参照するノードへの書き込みは実際のネイティブノードを変え、コミットされた値とプロパティ上書きは、保存された XDP とネイティブ PDF 外観生成を通じて永続化します
Data DOM の子コレクションも、独立したエントリストレージを持つ clone() を提供します。既存の構造的な append、insert、remove メソッドはネイティブデータツリーを変え続けます
トランザクションと上限
生きたコレクションオブジェクトと独立クローンは、イベントコレクションの割り当て上限、操作検査、トランザクション期限を共有します
捕捉されないイベントエラーや予算失敗は、ネイティブ値、繰り返しインスタンス、保持されたスクリプト状態、独立リストストレージ、ジャーナル状態を一緒に復元します
フォームとプロパティの生きたコレクションは読み取り専用です。直接代入、削除、プロパティ再定義、プロトタイプ変更、拡張禁止はエラーを送出します
Data DOM コレクションは、正準数値エントリの書き込み・削除・再定義を拒否しつつ、既存の名前付き構造メソッドと、通常の非数値プロパティ動作を保持します
カバレッジ
このインターフェイスは、現在のフォーム・プロパティの子コレクションと、独立した子リストクローンを公開します
一般的なテンプレート・フォームノード作成、再帰的なノードクローン、子ツリーの挿入・削除、追加のノードクラスバインディングは別の作業です