fastlion-amis
Version:
一种MIS页面生成工具
37 lines (33 loc) • 853 B
text/typescript
import {RendererEvent} from '../utils/renderer-event';
import {dataMapping} from '../utils/tpl-builtin';
import {
Action,
ListenerAction,
ListenerContext,
LoopStatus,
registerAction
} from './Action';
/**
* 组件动作
*
* @export
* @class CmptAction
* @implements {Action}
*/
export class CmptAction implements Action {
async run(
action: ListenerAction,
renderer: ListenerContext,
event: RendererEvent<any>
) {
// 根据唯一ID查找指定组件
const component =
renderer.props.$schema.id !== action.componentId
? event.context.scoped?.getComponentById(action.componentId)
: renderer;
// 执行组件动作
(await component.props.onAction?.(event, action, action.args)) ||
component.doAction?.(action, action.args);
}
}
registerAction('component', new CmptAction());