設定觸發程式

元件可包含將在其他元件中執行動作的觸發程式。您必須註冊觸發程式,元件才能夠引發觸發程式。

元件提供有效負載給觸發程式,這會傳送到觸發程式引發時所執行的任何動作。您可以為每個觸發程式選取將被執行的動作。為共同運作而建立的元件,可以在無須使用者互動的情況下,自動引發觸發程式來執行動作。

註冊觸發程式

就自訂元件而言,觸發程式會註冊成為元件之註冊資料的一部分。若要新增觸發程式,請更新元件支援之各個觸發程式的 "triggers" 特性陣列。此外,還必須指定觸發程式支援的有效負載,如此才能建立使用者介面,讓使用者可以將有效負載內的值對應至動作所支援的特性。

  1. 編輯 appinfo.json 檔案並複查 "triggers":[], 項目:
    "triggers": [{
        "triggerName": "helloWorldWhoAreYou",
        "triggerDescription": "Show Who I Am",
        "triggerPayload": [{
          "name": "whoAreYou",
          "displayName": "Who I Am"
       }]
    }],
  2. 將檔案同步到網站伺服器。

在此範例觸發程式項目中,您定義了 triggerName ("helloWorldWhoAreYou")。此名稱值必須是唯一的。接著,提供觸發程式的描述 ("Show Who I Am"),供使用者介面對話方塊用來顯示您的觸發程式。最後,為觸發程式定義單一值有效負載;使用者將可以選取此有效負載中的項目,將項目對應至動作的欄位。

觸發程式註冊之後,當您前往元件「設定值」面板中的連結頁籤時,應該就能夠見到並選取該觸發程式。

引發觸發程式

元件可在任意點引發觸發程式。觸發程式通常由使用者互動引發,例如點選按鈕或選取表格中的資料列。元件可根據任意條件引發觸發程式,例如因 REST API 呼叫而造成資料變更時。您可以在觸發程式引發後執行任意數目的動作。

以下是如何引發觸發程式的範例:
  1. 編輯 render.js 檔案並在 viewModel 物件中新增 JavaScript 函數,此函數將會呼叫 Sites SDK 來引發觸發程式。
    self.raiseTrigger = function (triggerName) {
      SitesSDK.publish(SitesSDK.MESSAGE_TYPES.TRIGGER_ACTIONS, {
        'triggerName': 'helloWorldWhoAreYou', 
        'triggerPayload': { "whoAreYou": "This is " + self.whoAreYou() + "!"}
      });
    };
  2. 在使用者介面中新增一個項目,用以呼叫函數來引發觸發程式 (-edit template.html),並且在 </div> 之前新增一個按鈕。
    <button data-bind="click raiseTrigger">Who Am I?</button>
  3. render.js 檔案同步或上傳至您的 Oracle Content Management 執行處理伺服器。

ViewModel 物件中,您建立了一個點選按鈕後所呼叫的 JavaScript 函數。此函數會呼叫 Sites SDK 並指示它觸發為此觸發程式 "helloWorldWhoAreYou" 定義的所有動作。此函數也透過包含單一欄位 ("whoAreYou") 的 triggerPayload 傳送。"helloWorldWhoAreYou""whoAreYou" 這兩個值會是您在上一個步驟中註冊觸發程式時輸入的值。

註:

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