diff --git a/packages/designer/src/document/document-model.ts b/packages/designer/src/document/document-model.ts index 6a5eade7e..77f3cee83 100644 --- a/packages/designer/src/document/document-model.ts +++ b/packages/designer/src/document/document-model.ts @@ -51,7 +51,7 @@ export class DocumentModel { */ readonly modalNodesManager: ModalNodesManager; - private nodesMap = new Map(); + private _nodesMap = new Map(); @obx.val private nodes = new Set(); private seqId = 0; private _simulator?: ISimulatorHost; @@ -70,6 +70,10 @@ export class DocumentModel { return this._simulator || null; } + get nodesMap(): Map { + return this._nodesMap; + } + get fileName(): string { return this.rootNode.getExtraProp('fileName')?.getAsString() || this.id; } @@ -148,7 +152,7 @@ export class DocumentModel { * 根据 id 获取节点 */ getNode(id: string): Node | null { - return this.nodesMap.get(id) || null; + return this._nodesMap.get(id) || null; } /** @@ -202,13 +206,13 @@ export class DocumentModel { // todo: this.activeNodes?.push(node); } - const origin = this.nodesMap.get(node.id); + const origin = this._nodesMap.get(node.id); if (origin && origin !== node) { // almost will not go here, ensure the id is unique origin.internalSetWillPurge(); } - this.nodesMap.set(node.id, node); + this._nodesMap.set(node.id, node); this.nodes.add(node); this.emitter.emit('nodecreate', node); @@ -259,7 +263,7 @@ export class DocumentModel { if (!this.nodes.has(node)) { return; } - this.nodesMap.delete(node.id); + this._nodesMap.delete(node.id); this.nodes.delete(node); this.selection.remove(node.id); node.remove(); @@ -584,7 +588,7 @@ export class DocumentModel { const componentsMap: ComponentMap[] = []; // 组件去重 const map: any = {}; - for (let node of this.nodesMap.values()) { + for (let node of this._nodesMap.values()) { const { componentName } = node || {}; if (!map[componentName] && node?.componentMeta?.npm?.package) { map[componentName] = true; diff --git a/packages/editor-preset-vision/src/editor.ts b/packages/editor-preset-vision/src/editor.ts index 70fc3860a..cfabc4cad 100644 --- a/packages/editor-preset-vision/src/editor.ts +++ b/packages/editor-preset-vision/src/editor.ts @@ -27,6 +27,9 @@ editor.set('designer', designer); const nodeCache: any = {}; designer.project.onCurrentDocumentChange((doc) => { + doc.nodesMap.forEach((node) => { + nodeCache[node.id] = node; + }); doc.onRendererReady(() => { bus.emit(VE_EVENTS.VE_PAGE_PAGE_READY); });