はじめに
プリザンターの機能であるスクリプト、画面描画が完了したタイミングで実行される$p.events.*の関数群があります。この関数群の実行タイミングの実装を今回は見てみます。
実装を見てみよう
実装は下記にまとめられています。
これは実際のイベントをフックするための実装になります。サーバ側のHTML組み立てをおこなわれている部分で、イベントを直接フックしています。記録テーブルの一覧では、下記の部分で実行が仕込まれています。
サーバ側で組み立てられたJavaScriptを含んだHTMLがクライアントに送られ、画面描画がおこなわれる際に前述の$p.eventArgsでイベントがフックされ、実行されます。
ソースコード上でイベントの名前、今回の場合だとon_grid_loadを検索すると、どのタイミングで実行されるか調べることが出来ます。
今回のon_grid_loadの場合だと、一覧の新規読み込み時と追加読み込み時には実行されますが、フィルタやソータの変更では実行されないことが分かります。
まとめ
今回は、$p.events.*の実行がどのタイミングでおこなわれているか実装から読み解いてみました。プリザンターのコアである独自のHTMLビルダーによってフロントコードが生成されて、それがフロントに描画される際に実行されるという、ちょっと変わった実装になっていることが分かりました。
このHTMLビルダーによってフロントコードが生成されて、それがフロントに描画されるという部分が、プリザンターのソースコードを読む上で重要になりますので、他の部分の解析にも是非役立ってみてください。