親コンテナに送信するフラグメントまたはレイアウト・イベントの呼出し
applicationで定義されているレイアウトおよび断片は通常、親コンテナ・コンテキストを認識しません。 つまり、レイアウトまたはフラグメント内で定義されたイベントは、レイアウトまたはフラグメント・スコープ内でのみ"listenable"になります。 これらのイベントを親コンテナ(別の外部フラグメントなど)でリスニング可能にするには、親が処理できるカスタム・イベントを起動する必要があります。
この例を考えてみます: たとえば、保存ボタンでフォームを定義しているとします。 ユーザーがフォーム・データを更新してボタンをクリックするたびに、on-clickイベントによって更新を保存するRESTコール・アクションがトリガーされます。 フラグメントを使用するページで更新を使用可能にするには、アクション・チェーンのフラグメント・コンテナにペイロードを出力するイベントの起動アクションが必要です。 これにより、ページがこのカスタム・イベントをリスニングし、イベント・リスナーを同じイベントにバインドし、必要に応じてペイロードをさらに処理できます。
ページから新しいカスタム・イベントを起動する場合は、カスタム・イベント(ページ・イベントとは異なり)がコンテナ階層を"bubbles"することに注意してください。 指定されたフローまたはページのイベント・リスナーは、コンテナの親でリスナーを探す前に実行されます。 コンテナ処理の順序は次のとおりです:
- イベントが起動されるページ
- ページを含むフロー
- フローを含むページ
- コンテナを再帰的に起動し、applicationで終了します。
レイアウトまたはフラグメント・イベントを親コンテナでリスニング可能にするには:
- 親コンテナにペイロードを出力するカスタム・イベントを作成します。
- レイアウトまたは断片「イベント」タブで、「+カスタム・イベント」をクリックします。
- イベントID (shouldemailbesentなど)を入力し、その親コンポーネントにイベントのペイロードを発行するオプションを選択します。 レイアウト・イベントの場合は、「イベントをページに出力」を選択し、フラグメント・イベントの場合は、「イベントをコンテナに出力」を選択します。 「Create」をクリックします。
- 必要に応じて、イベント・エディタでイベントを選択し、プロパティ・ペインのペイロードの横にある「パラメータの追加」をクリックして、親コンテナに渡されるペイロードを指定します。
- ペイロード・パラメータ名を入力し、そのタイプを選択して、「作成」をクリックします。 このフラグメントの例では、タイプがbooleanのshouldEmailBeSentペイロード・パラメータです:
ノート:
イベントがペイロードを親コンテナに出力するように設定されている場合、そのpropagationBehaviorプロパティは「フラグメントまたはレイアウト・モデル」でcontainerに設定されます。 デフォルトはselfで、レイアウトまたはフラグメントで定義されたイベント・リスナーでのみイベントを処理できることを示します。 - イベントの発生時にトリガーされるイベントの起動アクションを含むアクション・チェーンを作成します。
- レイアウトまたはフラグメントの「アクション・チェーン」タブに切り替えて、「+アクション・チェーン」をクリックし、IDを入力し、「作成」をクリックして新しいアクション・チェーンを作成します。 既存のアクション・チェーンを選択することもできます。
- アクション・チェーンで、Fire Eventアクションをドラッグ・アンド・ドロップします。
- 「Fireイベントのプロパティ」ペインで、起動するイベントを選択します(例: shouldemailbesent)。
- 「パラメータ」で、shouldemailbesent 「変数ピッカーを開く」の横にある(x)をクリックし、「入力パラメータ」の下に文字列型valueを作成します。
- レイアウトまたはフラグメントを使用するページで、カスタム・イベントを処理するように親コンテナを構成します。
- ページ・デザイナで、コンポーネント(フラグメントなど)を選択して「プロパティ」ペインを開き、「イベント」タブをクリックしてから、「+イベント・リスナー」をクリックし、推奨されるカスタム・イベント(shouldemailbesentなど)を選択します。
- イベントが発生したときにトリガーする必要があるアクション・チェーンを定義します。 たとえば、ユーザーがフラグメントでスイッチを切り替えたときに、ページに通知を表示する場合があります。 これを行うには、「通知の起動」アクションを追加し、その後に「変数の割当て」アクションを追加して、アクション・チェーンの値をページ・レベルの変数に割り当てます。


