步骤 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。根据用户选择的布局,当前存在 <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:注册操作