trs-ui-app
Version:
TRS 可视化低代码平台 前端移动 UI 组件库 👍
46 lines (44 loc) • 1.57 kB
JavaScript
function parseHandler(event) {
const newEvent = JSON.parse(JSON.stringify(event));
if (newEvent.eventHanlder) {
newEvent.eventHandler = newEvent.eventHanlder;
}
return newEvent;
}
function useEventHandler(trsEvents, uiSchema, eventHandlers, allRefs) {
const excuteEvent = (event, item) => {
if (event.isLinkage) {
const com = allRefs.value.find(item => item.key === event.eventHanlder.split('.')[0]);
const action = event.eventHanlder.split('.')[1];
if (!com || !com[action]) {
return;
}
return com[action](...item);
}
else {
if (!eventHandlers[event.eventHandler]) {
return;
}
return eventHandlers[event.eventHandler](...item);
}
};
return (config, ...item) => {
const { eventType } = config;
const event = trsEvents.value.length
? trsEvents?.value?.find(it => it.eventType === eventType)
: uiSchema?.value?.eventOptions?.find(it => it.eventType === eventType);
if (!event) {
return;
}
if (event.eventHandlers && event.eventHandlers.length) {
for (let i = 0; i < event.eventHandlers.length; i++) {
const ev = event.eventHandlers[i];
excuteEvent(ev, item);
}
}
else {
return excuteEvent(parseHandler(event), item);
}
};
}
export { useEventHandler as default };