設定動作

您可以設定讓元件利用動作註冊,以便將其拖放至要執行元件內動作的頁面上。

註冊動作

觸發程式引發之後,便會在元件上呼叫動作。元件可以註冊任意數目的動作,也可以定義動作所支援的有效負載。當使用者選取動作時,可以填入要傳送至動作的有效負載。

和註冊觸發程式一樣,您可以在主題的 appinfo.json 註冊資料中註冊元件所支援的動作。

以下是如何註冊動作的範例:

  1. 編輯元件的 appinfo.json 檔案,並更新 "actions":[], 項目。
    "actions": [{
      "actionName": "helloWorldChangeWhoIAm",
      "actionDescription": "Change Who I Am",
      "actionPayload": [{
        "name": "whoAreYou",
        "description": "Who are you?",
        "type": {
          "ojComponent": {
           "component": "ojInputText"}
          },
        },
        "value": ""
      }]
    }]
  2. 註冊之後,便可在元件「設定值」面板的連結頁籤中,在按一下觸發程式後所呼叫的動作對話方塊中看到此動作。

執行動作

動作註冊之後,您便可以將元件拖放至要執行元件內動作的頁面上。要執行動作的元件必須監聽 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