您可以设置组件来利用操作注册,以便可以将其放在页上,用于在您的组件中执行操作。
注册操作
引发了触发器时会对组件调用操作。组件可以注册任意数量的操作,并且还可以定义操作支持的有效负载。用户选择操作时,他们可以填充要传递到相应操作的有效负载。
与注册触发器一样,可以在主题的 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
。