mirror of
https://github.com/Tencent/tmagic-editor.git
synced 2025-04-06 03:57:56 +08:00
fix(core): 修复多组件同一事件监听问题修改后导致的共通点击失效问题
统一自定义事件和共通事件行为。
This commit is contained in:
parent
fa4a6d71f6
commit
a96d547c20
@ -21,13 +21,7 @@ import { EventEmitter } from 'events';
|
||||
import type { EventItemConfig, Id, MApp } from '@tmagic/schema';
|
||||
|
||||
import Env from './Env';
|
||||
import {
|
||||
bindCommonEventListener,
|
||||
DEFAULT_EVENTS,
|
||||
getCommonEventName,
|
||||
isCommonMethod,
|
||||
triggerCommonMethod,
|
||||
} from './events';
|
||||
import { bindCommonEventListener, isCommonMethod, triggerCommonMethod } from './events';
|
||||
import type Node from './Node';
|
||||
import Page from './Page';
|
||||
import { fillBackgroundImage, isNumber, style2Obj } from './utils';
|
||||
@ -202,13 +196,8 @@ class App extends EventEmitter {
|
||||
}
|
||||
|
||||
public bindEvent(event: EventItemConfig, id: string) {
|
||||
let { name: eventName } = event;
|
||||
if (DEFAULT_EVENTS.findIndex((defaultEvent) => defaultEvent.value === eventName) > -1) {
|
||||
// common 事件名通过 node id 避免重复触发
|
||||
eventName = getCommonEventName(eventName, id);
|
||||
}
|
||||
|
||||
this.on(`${eventName}_${id}`, (fromCpt: Node, ...args) => {
|
||||
const { name } = event;
|
||||
this.on(`${name}_${id}`, (fromCpt: Node, ...args) => {
|
||||
this.eventHandler(event, fromCpt, args);
|
||||
});
|
||||
}
|
||||
|
@ -41,12 +41,9 @@ export const DEFAULT_EVENTS: EventOption[] = [{ label: '点击', value: `${COMMO
|
||||
|
||||
export const DEFAULT_METHODS: EventOption[] = [];
|
||||
|
||||
export const getCommonEventName = (commonEventName: string, nodeId: string | number) => {
|
||||
const returnName = `${commonEventName}:${nodeId}`;
|
||||
|
||||
if (commonEventName.startsWith(COMMON_EVENT_PREFIX)) return returnName;
|
||||
|
||||
return `${COMMON_EVENT_PREFIX}${returnName}`;
|
||||
export const getCommonEventName = (commonEventName: string) => {
|
||||
if (commonEventName.startsWith(COMMON_EVENT_PREFIX)) return commonEventName;
|
||||
return `${COMMON_EVENT_PREFIX}${commonEventName}`;
|
||||
};
|
||||
|
||||
export const isCommonMethod = (methodName: string) => methodName.startsWith(COMMON_METHOD_PREFIX);
|
||||
@ -73,8 +70,7 @@ const commonClickEventHandler = (app: App, eventName: string, e: any) => {
|
||||
const node = getDirectComponent(e.target, app);
|
||||
|
||||
if (node) {
|
||||
const { instance, data } = node as Node;
|
||||
app.emit(getCommonEventName(eventName, data.id), instance);
|
||||
app.emit(getCommonEventName(eventName), node);
|
||||
}
|
||||
};
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user