步驟 6:引發觸發程式

在這個步驟中,將會告訴您如何引發看到的已註冊觸發程式。

元件可在任意點引發觸發程式。觸發程式通常由使用者互動,透過點選按鈕或選取表格中的資料列引發。不過其實元件可根據任意條件引發觸發程式,例如因 REST 呼叫而造成資料變更時。

在此範例中,當您按一下影像後將會透過 whoAreYou 特性目前的值引發觸發程式。

複查 render.js 檔案並查看 SampleComponentViewModel 物件。

引發觸發程式:

  1. 複查 SampleComponentViewModel 物件中呼叫 Sites SDK 以引發觸發程式的函數。

    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 函數。此函數會呼叫 Sites SDK 並指示它觸發為觸發程式 "imageClicked" 定義的所有動作,此為從步驟 2 中的 click 連結傳入的值。也會透過包含單一欄位 payloadDatatriggerPayload 傳送,及透過靜態值 'some data here' 傳送。imageClickedwhoAreYou 與註冊觸發程式的 appinfo.json 檔案 (上一個步驟中) 中的這些值相符。

在範例程式碼中,觸發程式會透過 click 連結的 data-bind 引發,並傳入觸發程式名稱 imageClicked。根據使用者選擇的版面配置,目前有 3 種 <scs-image> 元件的呈現。為了確保會針對每個版面配置引發觸發程式,請編輯 render.js 檔案進行以下變更。

  • 從不同版面配置引發觸發程式。找到此程式碼的兩個項目:

    '<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. 按一下元件中的影像。

    便會出現警示,顯示 no message defined,因為您尚未指定 imageBannerText 值。

  12. 將頁面切換為「編輯」模式,再次啟動該元件的「設定值」面板。

  13. 按一下自訂設定值並輸入 Workplace

  14. 關閉「設定值」面板,並將頁面切換為「預覽」模式。

  15. 按一下元件中的影像。

    現在應該會顯示更新的有效負載 Workplace,這是從您對 click 連結所做的變更呼叫。

您可以在觸發程式引發後執行任意數目的動作。

註:

沒有預先定義的動作執行順序。雖然動作會依所列示的順序呼叫,但並不會等待動作完成後才呼叫下一個動作。如果某個動作進行非同步呼叫,在下一個動作執行前它也許還沒完成。

繼續進行步驟 7:註冊動作