您可以设置组件来利用操作注册,以便可以将其放在页上,用于在您的组件中执行操作。
注册操作
引发了触发器时会对组件调用操作。组件可以注册任意数量的操作,并且还可以定义操作支持的有效负载。用户选择操作时,他们可以填充要传递到相应操作的有效负载。
与注册触发器一样,可以在主题的 appinfo.json 注册数据中注册组件支持的操作。
下面是有关如何注册操作的示例:
appinfo.json 文件并更新 "actions":[], 条目。
"actions": [{
"actionName": "helloWorldChangeWhoIAm",
"actionDescription": "Change Who I Am",
"actionPayload": [{
"name": "whoAreYou",
"description": "Who are you?",
"type": {
"ojComponent": {
"component": "ojInputText"}
},
},
"value": ""
}]
}]注册后,操作将在操作对话框中可见,当您在组件的“设置”面板上的链接选项卡上单击触发器时,将调用该操作。
执行操作
注册了操作后,您便能够将在组件中执行操作的组件放在页上。要使组件执行操作,它必须监听 EXECUTE_ACTION 消息。此消息还包括传递到操作的有效负载,您必须从其提取预期值。
EXECUTE_ACTION 消息,请编辑 render.js 文件并使用以下条目更新 ViewModel 对象:
self.executeActionListener = function (args) {
// get action and payload
var payload = $.isArray(args.payload) ? args.payload[0] : {},
action = args.action,
actionName = action && action.actionName;
// handle 'helloWorldChangeWhoIAm' actions
if ((actionName === 'helloWorldChangeWhoIAm') && (payload.name === 'whoAreYou')) {
self.whoAreYou(payload.value);
}
};
这段代码创建一个执行操作的 JavaScript 函数,然后在发出 EXECUTE_ACTION 消息时使用 Sites SDK 调用该函数。
每当发出 EXECUTE_ACTION 消息时都会调用该操作,并且由组件决定仅处理设计为由其处理的操作。为此,您必须检查操作的名称以确保它是您可以处理的操作。
操作的有效负载是值数组。在本示例中,假定值是数组中的第一个条目。通常,您必须从数组中查找您关注的有效负载值。
注:
由于操作监听程序是回调,因此您应使用 JavaScript 闭包或适当地绑定函数,以确保在执行函数时,您有权访问ViewModel。