设置触发器

组件可以包括将执行其他组件中的操作的触发器。您必须注册要由组件引发的触发器。

组件可以为触发器提供有效负载,有效负载将传递给引发触发器时执行的任何操作。您可以选择将为每个触发器执行的操作。构建为一起工作的组件可以自动引发触发器来执行操作,而无需用户交互。

注册触发器

对于定制组件,将作为该组件的注册数据的一部分来注册触发器。要添加触发器,请使用组件支持的每个触发器更新 "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 文件,并在将调用 Sites SDK 以引发触发器的 viewModel 对象中添加 JavaScript 函数。
    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" 这些值与您在前面步骤中注册触发器时输入的那些值匹配。

注:

执行操作时没有预定义的顺序。虽然每个操作将按其列出的顺序进行调用,但是在调用下一个操作之前不需要等待该操作完成。如果操作进行异步调用,则执行下一个操作之前该操作可能未完成。