fastlion-amis
Version:
一种MIS页面生成工具
47 lines (42 loc) • 986 B
text/typescript
import {RendererEvent} from '../utils/renderer-event';
import {
Action,
ListenerAction,
ListenerContext,
LoopStatus,
registerAction
} from './Action';
/**
* 自定义动作,JS脚本
*
* @export
* @class CustomAction
* @implements {Action}
*/
export class CustomAction implements Action {
async run(
action: ListenerAction,
renderer: ListenerContext,
event: RendererEvent<any>
) {
// 执行自定义编排脚本
let scriptFunc = action.script;
if (typeof scriptFunc === 'string') {
scriptFunc = new Function(
'context',
'doAction',
'event',
scriptFunc
) as any;
}
// 外部可以直接调用doAction来完成动作调用
// 可以通过上下文直接编排动作调用,通过event来进行动作干预
await (scriptFunc as any)?.call(
null,
renderer,
renderer.doAction.bind(renderer),
event
);
}
}
registerAction('custom', new CustomAction());