在此步骤中,我们将向您说明如何引发您看到的已注册的触发器。
组件可以在任何点引发触发器。通常,触发器由用户交互(通过单击按钮或选择表中的行)引发。但是,组件可以基于任何标准引发触发器;例如,当数据由于 REST 调用而更改时。
对于此示例,当您单击图像时,它将引发触发器,传递 whoAreYou
属性的当前值。
检查 render.js
文件并查看 SampleComponentViewModel
对象。
要引发触发器,请执行以下操作:
检查 SampleComponentViewModel
对象中用于调用 Sites SDK 来引发触发器的函数。
self.raiseTrigger = function (triggerName) { SitesSDK.publish(SitesSDK.MESSAGE_TYPES.TRIGGER_ACTIONS, { 'triggerName': triggerName, 'triggerPayload': { 'payloadData': 'some data here' } }); };
现在需要用户界面中的某些信息来调用函数以引发触发器。检查 render.js
文件并更新 sampleComponentTemplate
对象以具有以下条目:
'<div data-bind="attr: {style: imageStyle, \'data-layout\': alignImage()}, click: imageClicked">' +
在 SampleComponentViewModel
对象中,您查看单击图像时调用的 JavaScript 函数。此函数调用 Sites SDK 以告知它触发为触发器 "imageClicked"
定义的所有操作,这是从步骤 2 中的 click
绑定传入的值。它还传递具有单个字段 payloadData
的 triggerPayload
,并传递静态值 'some data here'
。这些值(imageClicked
和 whoAreYou
)与(在前面步骤中)注册触发器的 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 的结果
您现在应该能够注册要针对您的触发器执行的操作,并在引发触发器时执行该操作:
刷新站点中的页,以便站点构建器能够获取对组件的更改。
让页进入编辑模式。
将组件拖放到页上。
针对组件打开“设置”面板。
选择“设置”面板顶部的链接选项卡。
选择触发器操作作为链接类型。
单击您看到的已注册的 imageClicked 触发器。
在对话框中,从页操作部分中拖动显示预警操作。
在消息字段中,选择 payloadData 值,其是您注册触发器时输入的有效负载。
关闭“设置”面板,并将站点构建器切换到预览模式。
单击组件中的图像。
此时将出现预警,显示 no message defined
,因为您未指定 imageBannerText
值。
让页进入编辑模式,并再次为组件打开“设置”面板。
单击定制设置,并输入 Workplace。
关闭“设置”面板,并将页切换到预览模式。
单击组件中的图像。
现在它应该显示更新的有效负载 Workplace
,这是从您对 click
绑定进行的更改调用的。
引发触发器时,您可以执行任意数量的操作。
注:
执行操作时没有预定义的顺序。虽然每个操作将按其列出的顺序进行调用,但是在调用下一个操作之前不需要等待该操作完成。如果操作进行异步调用,则执行下一个操作之前该操作可能未完成。继续执行步骤 7:注册操作。