コンポーネントへのイベントハンドラの動的な追加
コンポーネントから起動されるイベントのハンドラを動的に追加できます。
Component コンポーネントの addEventHandler() メソッドは、廃止された addHandler() メソッドの代わりに使用されます。
コンポーネントにイベントハンドラを動的に追加するには、addEventHandler() メソッドを使用します。
- event
- 最初の引数は、ハンドラをトリガするイベントの名前です。コンポーネントから起動しないイベントの起動開始をコンポーネントに強制することはできないため、コンポーネントから起動するイベントに、この引数が対応することを確認してください。コンポーネントのマークアップの <aura:registerEvent> タグにより、コンポーネントから起動するイベントが公開されます。
- コンポーネントイベントの場合、<aura:registerEvent> タグの name 属性と一致するようにこの引数を設定します。
- アプリケーションイベントの場合、namespace:eventName 形式のイベント記述子と一致するようにこの引数を設定します。
- handler
- 2 つ目の引数は、イベントを処理するアクションです。ハンドラをマークアップで静的に定義した場合、<aura:handler> タグの action 属性に指定する値と似ています。この引数には 2 つのオプションがあります。
- コントローラアクションを使用するには、cmp.getReference("c.actionName") 形式を使用します。
- 匿名関数を使用するには、次の形式を使用します。
その他の引数の説明については、Aura Reference アプリケーションの「JavaScript API」 を参照してください。
$A.createComponent() のコールバック関数で動的に作成されたコンポーネントにイベントハンドラを追加することもできます。詳細は、「コンポーネントの動的な作成」を参照してください。
例
次のコンポーネントには、コンポーネントイベントとアプリケーションイベントを起動および処理するボタンがあります。
クライアント側コントローラを次に示します。
addEventHandler() コールの最初のパラメータに注目します。コンポーネントイベントの構文は次のようになっています。
アプリケーションイベントの構文は次のようになっています。
コンポーネントイベントまたはアプリケーションイベントでは、コントローラアクションの cmp.getReference() を使用する代わりに、匿名関数をハンドラとして使用できます。
たとえば、アプリケーションイベントハンドラは次のようになります。