アクションとイベント
フレームワークでは、イベントを使用してコンポーネント間でデータがリレーされます。通常、これはユーザアクションでトリガされます。次に、アクションとイベントの使用の考慮事項をいくつか示します。
- アクション
- コンポーネントまたはアプリケーションの要素に対するユーザ操作。ユーザアクションでイベントがトリガされますが、イベントは常にユーザアクションで明示的にトリガされるわけではありません。この種別のアクションは、クライアント側の JavaScript コントローラのアクション (コントローラアクションとも呼ばれる) と同じではありません。次のボタンは、ボタンのクリックに応じてブラウザの onclick イベントに結び付けられます。
1<ui:button label = "Click Me" press = "{!c.handleClick}" />ボタンをクリックすると、コンポーネントのクライアント側コントローラで handeClick メソッドが呼び出されます。
- イベント
- アクションに関するブラウザからの通知。ブラウザイベントは、前の例のようにクライアント側の JavaScript コントローラで処理されます。ブラウザイベントは、コンポーネント間でデータを通信するために JavaScript コントローラで独自に作成して起動できるコンポーネントイベントやアプリケーションイベントと同じではありません。たとえば、チェックボックスのクリックイベントをクライアント側コントローラに結び付け、そのコントローラからコンポーネントイベントを起動して、関連データを親コンポーネントと通信できます。
システムイベントと呼ばれる別のタイプのイベントは、ライフサイクル (コンポーネントの初期化、属性値の変更、表示など) の間にフレームワークによって自動的に起動されます。コンポーネントは、コンポーネントのマークアップでイベントを登録してシステムイベントを処理できます。
次の図は、サーバからのデータの取得をコンポーネントに要求するボタンをユーザがクリックしたときの様子を示しています。
- ユーザがボタンのクリックまたはコンポーネントに対する操作を行うと、ブラウザイベントがトリガされます。たとえば、ボタンのクリック時にサーバのデータを保存できます。
- ボタンをクリックすると、ヘルパー関数を呼び出す前にカスタムロジックを提供するクライアント側の JavaScript コントローラが呼び出されます。
- JavaScript コントローラにより、ヘルパー関数が呼び出されます。ヘルパー関数を使用すると、コードの再利用が促進されますが、この例では省略可能です。
- ヘルパー関数により、Apex コントローラメソッドがコールされ、アクションがキューに入ります。
- Apex メソッドが呼び出され、データが返されます。
- Apex メソッドが完了すると、JavaScript コールバック関数が呼び出されます。
- JavaScript コールバック関数により、ロジックが評価されて、コンポーネントの UI が更新されます。
- ユーザに更新されたコンポーネントが表示されます。
または、直接的なユーザアクションなしで変更され、change イベントを自動的に起動するコンポーネントの属性値を考えます。属性値が変更されると、change イベントを登録するコンポーネントは、カスタムロジックが含まれる JavaScript コントローラを呼び出してこのイベントを処理します。これにより、ステップ (3) 以降に進んでサーバからデータを取得できます。