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

アプリケーションイベント

アプリケーションイベントは、従来の公開/登録モデルに従います。アプリケーションイベントは、コンポーネントのインスタンスから起動されます。イベントのハンドラを提供するすべてのコンポーネントに通知されます。

カスタムアプリケーションイベントを作成する

カスタムアプリケーションイベントは、.evt リソースの <aura:event> タグを使用して作成できます。イベントには、そのイベントの起動前に設定可能で、処理時に読み取り可能な属性を含められます。

アプリケーションイベントの場合は、<aura:event> タグに type="APPLICATION" を使用します。たとえば、次のアプリケーションイベントには message 属性が 1 つ設定されています。

1<aura:event type="APPLICATION">
2    <!-- add aura:attribute tags to define event shape.
3      One sample attribute here -->
4    <aura:attribute name="message" type="String"/>
5</aura:event>

イベントを処理するコンポーネントは、イベントデータを取得できます。このイベントの属性を取得するには、ハンドラのクライアント側コントローラで event.getParam("message") をコールします。

アプリケーションイベントを登録する

コンポーネントは、マークアップに <aura:registerEvent> を使用して、アプリケーションイベントを起動できるように登録します。name 属性は必須ですが、アプリケーションイベントでは使用されません。name 属性が関係するのは、コンポーネントイベントのみです。次の例では、name="appEvent" を使用していますが、この値はどこにも使用されていません。

1<aura:registerEvent name="appEvent" type="auradocs:appEvent"/>

アプリケーションイベントを起動する

JavaScript で $A.get("e.myNamespace:myAppEvent") を使用して、myNamespace 名前空間の myAppEvent イベントのインスタンスを取得します。fire() を使用して、イベントを起動します。

1var appEvent = $A.get("e.auradocs:appEvent");
2// set some data for the event (also known as event shape)
3//appEvent.setParams({ ... });
4appEvent.fire();

アプリケーションイベントを処理する

ハンドラコンポーネントのマークアップで <aura:handler> を使用します。<aura:handler>action 属性は、イベントを処理するクライアント側コントローラのアクションを設定します。次に例を示します。

1<aura:handler event="auradocs:appEvent" action="{!c.handleApplicationEvent}"/>

イベントが起動されると、クライアント側コントローラの handleApplicationEvent アクションがコールされます。

アプリケーションイベントのソースを取得する

evt.getSource() はアプリケーションイベントでは機能せず、コンポーネントイベントでのみ機能します。コンポーネントイベントは通常、cmp.getEvent('myEvt').fire(); のようなコードによって起動されるため、誰がイベントを起動したかが明白です。他方、どのコンポーネントがアプリケーションイベントを起動したかはやや不明瞭です。アプリケーションイベントは、$A.getEvt('myEvt').fire(); のようなコードによって起動されます。アプリケーションイベントのソースを確認する必要がある場合は、evt.setParams() を使用して、イベントを起動する前にイベントデータにソースコンポーネントを設定します。たとえば、evt.setParams("source" : sourceCmp) を使用します。この sourceCmp はソースコンポーネントへの参照です。

アプリケーションの表示中に起動されるイベント

いくつかのイベントは、アプリケーションを表示中に起動されます。すべての init イベントは、コンポーネントまたはアプリケーションが初期化されたことを示すために起動されます。コンポーネントが別のコンポーネントまたはアプリケーションに含まれる場合は、まず内部のコンポーネントから初期化されます。表示中にサーバコールが実行された場合は、aura:waiting が起動されます。最後に、すべての表示が完了したことを示すために、aura:doneWaiting が起動されてから aura:doneRendering が起動されます。詳細は、「表示ライフサイクル中に起動されたイベント」を参照してください。