ステップ6: トリガーの呼出し

このステップでは、登録済と表示されたトリガーを呼び出す方法を示します。

トリガーは、コンポーネントが任意の時点で呼び出すことができます。通常、これは、ボタンのクリックや表内の行の選択などのユーザー操作によって呼び出されます。ただし、RESTコールが原因でデータが変更された場合など、コンポーネントが任意の基準に基づいてトリガーを呼び出すことができます。

このサンプルの場合、イメージをクリックすると、whoAreYouプロパティの現在値を渡すトリガーが呼び出されます。

render.jsファイルをレビューして、SampleComponentViewModelオブジェクトを確認します。

トリガーを呼び出すには:

  1. サイトSDKをコールしてトリガーを呼び出すSampleComponentViewModelオブジェクトの関数をレビューします。

    self.raiseTrigger = function (triggerName) {
      SitesSDK.publish(SitesSDK.MESSAGE_TYPES.TRIGGER_ACTIONS, {
        'triggerName': triggerName, 
        'triggerPayload': { 
            'payloadData': 'some data here'
        }
      });
    };
  2. トリガーを呼び出す関数をコールする際に、ユーザー・インタフェースに必要なものがあります。render.jsファイルをレビューして、次のエントリを含めるようにsampleComponentTemplateオブジェクトを更新します。

         '<div data-bind="attr: {style: imageStyle, \'data-layout\': alignImage()}, click: imageClicked">' +

SampleComponentViewModelオブジェクトで、イメージがクリックされたときにコールされるJavaScript関数が表示されます。この関数は、サイトSDKを呼び出し、トリガー"imageClicked"(ステップ2のclickバインドから渡される値です)に定義されているすべてのアクションをトリガーするよう命じます。これはまた、単一のフィールドpayloadDataを持つtriggerPayloadを渡し、静的な値'some data here'も渡します。値imageClickedおよびwhoAreYouは、トリガーが登録されている(前述のステップ)appinfo.jsonファイルの値と一致します。

サンプル・コードでは、トリガーはclickバインドのデータバインドによって呼び出され、トリガー名imageClickedを渡します。ユーザーが選択したレイアウトに基づいて、現在、<scs-image>コンポーネントの3つのレンダリングがあります。レイアウトごとにトリガーが呼び出されるようにするには、render.jsファイルを編集して次の変更を行います。

  • 別のレイアウトからトリガーを呼び出します。次のコードの2つのエントリを見つけます。

    '<div data-bind="attr: {style: imageStyle, \'data-layout\': alignImage()}">' +

    コードを次のように変更します。

    '<div data-bind="attr: {style: imageStyle, \'data-layout\': alignImage()}, click: imageClicked">' +
  • トリガーに渡すペイロードを指定します。次のコードを変更します:

        self.raiseTrigger = function (triggerName) {
          SitesSDK.publish(SitesSDK.MESSAGE_TYPES.TRIGGER_ACTIONS, {
            'triggerName': triggerName,
            'triggerPayload': {
              'payloadData': 'some data here'
            }
          });
        };

    かわりに次のコードを使用します:

        self.raiseTrigger = function (triggerName) {
          SitesSDK.publish(SitesSDK.MESSAGE_TYPES.TRIGGER_ACTIONS, {
            'triggerName': triggerName,
            'triggerPayload': {
              'payloadData': self.imageBannerText() // pass banner text as payload
            }
          });
        };
  • render.jsファイルをOracle Content Managementインスタンス・サーバーに同期またはアップロードします。

これで必要なコードをレビューしました。ボタンがクリックされるとカスタム・コンポーネントがこれを呼び出すように、トリガーを結び付けることができます。

ステップ6の結果の確認

トリガーに対して実行するアクションを登録して、トリガーが呼び出されたときにアクションが実行されるようにする必要があります。

  1. サイト・ビルダーでコンポーネントへの変更内容を反映できるように、サイトでページをリフレッシュします。

  2. ページを編集モードで取り込みます。

  3. コンポーネントをページにドラッグ・アンド・ドロップします。

  4. 「設定」パネルをコンポーネントに対して開きます。

  5. 「設定」パネルの最上部で「リンク」タブを選択します。

  6. 「リンク・タイプ」として、「トリガー・アクション」を選択します。

  7. 登録済と表示されたimageClickedトリガーをクリックします。

  8. ダイアログで、「ページ・アクション」セクションから「アラートの表示」アクションをドラッグします。

  9. 「メッセージ」フィールドで、payloadData値を選択します。これは、トリガーを登録したときに入力したペイロードです。

  10. 「設定」パネルを閉じて、サイト・ビルダーをプレビュー・モードに切り替えます。

  11. コンポーネントでイメージをクリックします。

    imageBannerText値を指定していないため、no message definedを示すアラートが表示されます。

  12. ページを編集モードにして、コンポーネントの「設定」パネルを再度開きます。

  13. 「カスタム設定」をクリックしてWorkplace.と入力します。

  14. 「設定」パネルを閉じて、ページをプレビュー・モードに切り替えます。

  15. コンポーネントでイメージをクリックします。

    これで、更新されたペイロードWorkplaceが表示されます。これは、clickバインドに加えた変更から呼び出されます。

トリガーが呼び出された場合、任意の数のアクションを実行できます。

注:

アクションが実行されるタイミングに関して事前定義済の順序はありません。各アクションはリストされている順序でコールされますが、現在のアクションが完了するまで待機しないと次のアクションがコールされないわけではありません。アクションによって非同期コールが行われる場合、次のアクションが実行される前に完了しない可能性があります。

ステップ7: アクションの登録」に進みます。