设置操作

您可以设置组件来利用操作注册,以便可以将其放在页上,用于在您的组件中执行操作。

注册操作

引发了触发器时会对组件调用操作。组件可以注册任意数量的操作,并且还可以定义操作支持的有效负载。用户选择操作时,他们可以填充要传递到相应操作的有效负载。

与注册触发器一样,可以在主题的 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