步骤 8:执行操作

本主题结束时,您能够将在组件中执行操作的组件放在页上。这利用您在上一步中创建的操作注册。

要使组件执行操作,它必须监听 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 的结果

  1. 刷新站点中的页,以便站点构建器能够获取对组件的更改。

  2. 让页进入编辑模式。

  3. 将组件拖放到页上。

  4. 将按钮组件拖放到页上。

  5. 针对按钮组件打开“设置”面板。

  6. 在“一般信息”选项卡上,将按钮的标签更改为单击我!

  7. 选择“设置”面板顶部的链接选项卡。

  8. 选择触发器操作作为链接类型。

  9. 针对按钮组件单击单击按钮触发器。

  10. 在对话框中,展开左侧的 A_Local_Component 组件。

  11. A_Local_Component 组件中的更新图像宽度操作拖放到右侧。

  12. 图像宽度(像素)字段中输入 300px

  13. 将页切换到预览模式。

  14. 单击单击我!按钮。

此时,图像的大小将增加到 300px

注:

触发器和操作设计为支持组件间通信。它们并非设计为创建或管理状态。如果刷新页,页将还原到其原始状态,就像未引发触发器或者未执行操作一样。

继续执行步骤 9:为组件的每个实例创建不同的标题