本主题结束时,您能够将在组件中执行操作的组件放在页上。这利用您在上一步中创建的操作注册。
要使组件执行操作,它必须监听 EXECUTE_ACTION
消息。此消息还包括传递到操作的有效负载,您将从其提取预期值。
要监听 EXECUTE_ACTION
消息,请编辑 render.js
文件并使用以下条目更新 SampleComponentViewModel
对象:
SitesSDK.subscribe('EXECUTE_ACTION', $.proxy(self.executeActionsListener, self));
当收到 EXECUTE_ACTION
消息时,将执行关联的回调函数:
self.executeActionsListener = function (args) { // get action and payload var payload = args.payload, action = args.action; // handle 'setImageWidth' actions if (action && action.actionName === 'setImageWidth') { $.each(payload, function(index, data) { if (data.name === 'imageWidth') { self.imageWidth(data.value); } }); } }
这段代码创建一个执行操作的 JavaScript 函数,然后在发出 EXECUTE_ACTION
消息时使用 Sites SDK 调用该函数。
每当发出 EXECUTE_ACTION
消息时都会调用该组件,并且由组件决定仅处理设计为由其处理的操作。为此,您必须检查操作的名称以确保它是组件可以处理的操作。
操作的有效负载是值数组。通常,您将需要从数组中查找您关注的有效负载值。
注:
由于操作监听程序是回调,因此您应使用 JavaScript 闭包或适当地绑定函数,以确保在执行函数时,您有权访问 viewModel。检查步骤 8 的结果
刷新站点中的页,以便站点构建器能够获取对组件的更改。
让页进入编辑模式。
将组件拖放到页上。
将按钮组件拖放到页上。
针对按钮组件打开“设置”面板。
在“一般信息”选项卡上,将按钮的标签更改为单击我!
选择“设置”面板顶部的链接选项卡。
选择触发器操作作为链接类型。
针对按钮组件单击单击按钮触发器。
在对话框中,展开左侧的 A_Local_Component
组件。
将 A_Local_Component
组件中的更新图像宽度操作拖放到右侧。
在图像宽度(像素)字段中输入 300px。
将页切换到预览模式。
单击单击我!按钮。
此时,图像的大小将增加到 300px
。
注:
触发器和操作设计为支持组件间通信。它们并非设计为创建或管理状态。如果刷新页,页将还原到其原始状态,就像未引发触发器或者未执行操作一样。继续执行步骤 9:为组件的每个实例创建不同的标题。