この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

イベントハンドラの動的な追加

コンポーネントから起動されるイベントのハンドラを動的に追加できます。コンポーネントは、クライアント側で動的に作成することも、実行時にサーバから取得することもできます。

次のサンプルコードでは、イベントハンドラを c:sampleComponent のインスタンスに追加します。

1addNewHandler : function(cmp, event) {
2    var cmpArr = cmp.find({ instancesOf : "c:sampleComponent" });
3    for (var i = 0; i < cmpArr.length; i++) {
4        var outputCmpArr = cmpArr[i];
5        outputCmpArr.addHandler("cmpEvent", cmp, "c.someAction");
6    }
7}

イベントハンドラをコンポーネントに追加する addHandler() メソッドについて説明しましょう。

1outputCmpArr.addHandler("cmpEvent", cmp, "c.someAction");
  • cmpEvent — 最初の引数は、ハンドラをトリガするイベントの名前です。コンポーネントから起動しないイベントの起動開始をコンポーネントに強制することはできないため、コンポーネントから起動するイベントに、この引数が対応することを確認してください。コンポーネントのマークアップの <aura:registerEvent> タグにより、コンポーネントから起動するイベントが公開されます。いずれかの <aura:registerEvent> タグの name 属性と一致するように、この引数を設定してください。
  • cmp — 第 2 引数は、アクション式 (次の引数) を解決する値プロバイダです。この例の値プロバイダは、コントローラに関連付けられているコンポーネントです。
  • c.someAction — 第 3 引数は、イベントを処理するコントローラアクションです。ハンドラをマークアップで静的に定義した場合、<aura:handler> タグの action 属性に指定する値に相当します。

メソッドおよび引数の完全なリストについては、ドキュメント参照アプリケーションの JavaScript API を参照してください。

$A.createComponent() のコールバック関数で動的に作成されたコンポーネントにイベントハンドラを追加することもできます。詳細は、「コンポーネントの動的な作成」を参照してください。