From 8b0c9189e2af82596b6cf8c24df3c7756a4c182c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8A=9B=E7=9A=93?= Date: Fri, 18 Jun 2021 12:01:17 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E7=BB=84=E4=BB=B6?= =?UTF-8?q?=E5=85=83=E6=95=B0=E6=8D=AE=E6=9B=B4=E6=96=B0=E5=90=8E=20Settin?= =?UTF-8?q?gTopEntry=20=E6=9C=AA=E5=90=8C=E6=AD=A5=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E7=9A=84=20bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/designer/src/component-meta.ts | 15 +++++++++++++++ .../src/designer/setting/setting-top-entry.ts | 8 ++++++++ 2 files changed, 23 insertions(+) diff --git a/packages/designer/src/component-meta.ts b/packages/designer/src/component-meta.ts index 398f827d2..e40256d40 100644 --- a/packages/designer/src/component-meta.ts +++ b/packages/designer/src/component-meta.ts @@ -23,6 +23,7 @@ import { IconRemove } from './icons/remove'; import { IconClone } from './icons/clone'; import { ReactElement } from 'react'; import { IconHidden } from './icons/hidden'; +import EventEmitter from 'events'; function ensureAList(list?: string | string[]): string[] | null { if (!list) { @@ -66,6 +67,8 @@ export class ComponentMeta { private _npm?: NpmInfo; + private emitter: EventEmitter = new EventEmitter(); + get npm() { return this._npm; } @@ -229,6 +232,11 @@ export class ComponentMeta { this._isContainer = false; this._isModal = false; } + this.emitter.emit('metadata_change'); + } + + refreshMetadata() { + this.parseMetadata(this.getMetadata()); } private transformMetadata(metadta: ComponentMetadata): TransformedComponentMetadata { @@ -297,6 +305,13 @@ export class ComponentMeta { return true; } + onMetadataChange(fn: (args: any) => void): () => void { + this.emitter.on('metadata_change', fn); + return () => { + this.emitter.removeListener('metadata_change', fn); + }; + } + // compatiable vision prototype?: any; } diff --git a/packages/designer/src/designer/setting/setting-top-entry.ts b/packages/designer/src/designer/setting/setting-top-entry.ts index ab09d355c..6e03cc66a 100644 --- a/packages/designer/src/designer/setting/setting-top-entry.ts +++ b/packages/designer/src/designer/setting/setting-top-entry.ts @@ -80,6 +80,8 @@ export class SettingTopEntry implements SettingEntry { // clear fields this.setupItems(); + + this.setupEvents(); } private setupComponentMeta() { @@ -120,6 +122,12 @@ export class SettingTopEntry implements SettingEntry { } } + private setupEvents() { + this.componentMeta?.onMetadataChange(() => { + this.setupItems(); + }); + } + /** * 获取当前属性值 */