メインコンテンツまでスキップ

イベント処理の概要

@pocketのイベントシステムは、特定のイベントが発火した際に、事前に登録された処理を実行する形で動作します。

イベントの基本動作​

@pocketのイベント処理は、以下のような基本構造を持っています。

  1. イベントの発火: 用意されたイベント名が発火すると、対応する処理が呼び出されます。
  2. イベントの登録: 任意のイベントに対して、コールバック関数を登録できます。(イベントハンドラーの登録)
  3. イベントオブジェクトの受け渡し: コールバック関数はイベントオブジェクトを受け取り、イベントごとに異なるデータを利用できます。

イベント登録と発火の仕組み​

イベントリスナーは、第一引数にイベント名、第二引数にコールバック関数を指定して登録します。コールバック関数の引数には、イベントオブジェクトが渡されます。

イベントオブジェクトは各イベントごとに異なるデータを持ちます。

atPocket.events.on('app.record.edit.show', (event) => {
console.log(event.appId, event.recordId);
return event;
});

イベント名の {action} について​

レコードの画面で発火するイベント名には、画面を表す {action} が含まれます。

{action}対象の画面
createレコード作成画面
editレコード編集画面
detailレコード詳細画面

作成画面と編集画面の両方で同じ処理を行いたい場合は、イベント名を配列で指定します。

atPocket.events.on(['app.record.create.show', 'app.record.edit.show'], (event) => {
return event;
});

ハンドラーの中で値を変更する​

イベントハンドラーの中から atPocket.app.record.set() を呼び出すことはできません。値を変更する場合は、引数のイベントオブジェクトの record を書き換えて return してください。

atPocket.events.on('app.record.edit.change', (event) => {
event.record['field-3'].value = '計算結果';
return event;
});

詳しくは レコードへの値の反映 を参照してください。

ハンドラーの有効範囲​

イベントハンドラーは、配信されるカスタマイズ JS / プラグインのファイル単位で分離されます。

  • 同じイベントに複数のカスタマイズ JS / プラグインがハンドラーを登録しても、すべてが登録順に実行されます。
  • 別のアプリやポータルへ移動すると、登録したハンドラーは自動的に解放されます。
  • atPocket.events.off() で解除できるのは、自身が登録したハンドラーだけです。他のプラグインのハンドラーには影響しません。

関連ページ​