SitesSDK.subscribe(messageType, callback)

此函数实际上是消息监听程序,监听主机站点发出的消息。调用是异步进行的。

参数

在 SDK 收到特定类型的消息时将调用注册的回调。如果回调返回值,则该值将重新返回到页。如果未向此函数传递任何回调,则将删除该特定消息类型对应的任何已注册监听程序。

这些是 JavaScript 回调,因此,该函数应使用 JavaScript 闭包或适当地绑定该函数,以确保它有权访问适当的上下文。

名称 类型 说明

messageType

字符串

消息类型:

  • SETTINGS_UPDATED

  • TRIGGER_ACTIONS

  • EXECUTE_ACTION

  • GET_ACTIONS

  • GET_TRIGGERS

  • COPY_CUSTOM_DATA

  • PASTE_CUSTOM_DATA

callback

函数

从主机站点收到消息时的函数。

消息类型

消息类型 说明
SETTINGS_UPDATED 订阅此消息以在“设置”面板中更改了任何值时收到通知。通常,组件通过更新其在用户界面中的重现来响应。
TRIGGER_ACTIONS 发布此消息将引发触发器并传递有效负载。
EXECUTE_ACTION 订阅此消息以处理定制操作。监听程序通常通过执行给定操作来处理此消息。
GET_ACTIONS 订阅此消息以声明组件可以执行的一组操作。返回一组操作。
GET_TRIGGERS 订阅此消息以声明组件可以引发的一组触发器。返回一组触发器。
COPY_CUSTOM_DATA 订阅此消息以处理将定制设置数据复制到剪贴板。返回表示要放在剪贴板上的数据的对象。
PASTE_CUSTOM_DATA 订阅此消息以处理从剪贴板粘贴定制设置数据。

用法

有些监听程序要求传递数据,而有些监听程序应返回数据。

示例 1:

为消息类型 EXECUTE_ACTION 注册消息监听程序。

SitesSDK.subscribe(SitesSDK.MESSAGE_TYPES.EXECUTE_ACTION, self.executeAction,self);

注册的 callback 函数应接受参数,如下所示:

// typical signature of a callback function registered with a message
// type
function (args) {
                var payload = args.detail.message.payload,
                                        action = args.detail.message.action,
                                        actionName =  action && action.actionName;

                // do something here with the payload data

        }

示例 2:

COPY_CUSTOM_DATA 监听程序通常采用类似如下所示的代码实现:

     // listen for COPY_CUSTOM_DATA request
     SitesSDK.subscribe(SitesSDK.MESSAGE_TYPES.COPY_CUSTOM_DATA, 

方法 copyCustomDataListener() 会返回表示要复制到剪贴板的数据的对象,例如:

     // Handle Copy Style (save customSettingsData to the clipboard)
     self.copyCustomDataListener = function() {
         return {
             prop1: this.prop1(),
             prop2: this.prop2()
         };
     };

示例 3:

PASTE_CUSTOM_DATA 请求接受数据,但不必返回任何内容:

// listen for PASTE_CUSTOM_DATA request
SitesSDK.subscribe(SitesSDK.MESSAGE_TYPES.PASTE_CUSTOM_DATA, pasteCustomDataListener);

以及:

// Handle Paste Style (apply customSettingsData from the clipboard)
self.pasteCustomDataListener = function(data) {
     ...
};