セット処理
コンポーネント内のアクションを実行するページにドロップできるよう、アクション登録を利用するためにコンポーネントを設定できます。
登録処理
トリガーが発生すると、コンポーネント上でアクションが呼び出されます。 コンポーネントでは、アクションをいくつでも登録でき、アクションでサポートされるペイロードを定義することもできます。 ユーザーがアクションを選択すると、それらは、アクションに渡されるようペイロードを移入できます。
トリガーの登録と同様に、テーマのためのappinfo.json
登録データに、コンポーネントでサポートされているアクションを登録できます。
次に、アクションを登録する方法の例を示します。
-
コンポーネントの
appinfo.json
ファイルを編集し、"actions":[],
エントリを更新します。"actions": [{ "actionName": "helloWorldChangeWhoIAm", "actionDescription": "Change Who I Am", "actionPayload": [{ "name": "whoAreYou", "description": "Who are you?", "type": { "ojComponent": { "component": "ojInputText"} }, }, "value": "" }] }]
-
登録すると、アクションが、コンポーネントの「設定」パネルの「リンク」タブでトリガーをクリックすると呼び出されるアクション・ダイアログに表示されます。
アクションの実行
アクションを登録すると、コンポーネントを、コンポーネント内のアクションを実行するページにドロップできるようになります。 コンポーネントがアクションを実行するには、EXECUTE_ACTION
メッセージをリスニングする必要があります。 このメッセージには、予期される値を抽出する必要がある、アクションに渡されるペイロードも含まれています。
EXECUTE_ACTION
メッセージをリスニングするには、render.js
ファイルを編集し、ViewModel
オブジェクトを次のエントリで更新します:self.executeActionListener = function (args) {
// get action and payload
var payload = $.isArray(args.payload) ? args.payload[0] : {},
action = args.action,
actionName = action && action.actionName;
// handle 'helloWorldChangeWhoIAm' actions
if ((actionName === 'helloWorldChangeWhoIAm') && (payload.name === 'whoAreYou')) {
self.whoAreYou(payload.value);
}
};
これにより、アクションを実行するためのJavaScript関数が作成され、EXECUTE_ACTION
メッセージが生成されるたびに、Sites SDKを使用して関数が呼び出されます。
アクションは、EXECUTE_ACTION
メッセージが生成されるたびに呼び出され、処理するように設計されたアクションのみを処理するコンポーネント次第です。 これを行うには、処理できるアクションであることを確認するためにアクションの名前を確認する必要があります。
アクションのペイロードは、値の配列です。 この例では、値は配列内の最初のエントリであることが前提です。 通常は、配列から、関心のあるペイロード値を見つける必要があります。
ノート:
アクション・リスナーはコールバックであるため、JavaScriptクローズを使用するか、ファンクションを適切にバインドして、ファンクションの実行時にViewModel
にアクセスできるようにします。