From 59fac2555369707296fe1419a151ab276f50cef6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8A=9B=E7=9A=93?= Date: Mon, 24 Aug 2020 20:37:51 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E5=9C=A8=E5=88=87?= =?UTF-8?q?=E6=8D=A2=E9=A1=B5=E9=9D=A2=E6=97=B6=EF=BC=8C=E6=B2=A1=E6=9C=89?= =?UTF-8?q?=E9=94=80=E6=AF=81=E7=9B=B8=E5=BA=94=E8=8A=82=E7=82=B9=E5=AF=BC?= =?UTF-8?q?=E8=87=B4=E7=9A=84=E4=B8=80=E7=B3=BB=E5=88=97bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/designer/src/document/document-model.ts | 10 +++++++--- packages/designer/src/document/node/node.ts | 16 ++++++++-------- packages/plugin-outline-pane/src/tree-master.ts | 3 +++ 3 files changed, 18 insertions(+), 11 deletions(-) diff --git a/packages/designer/src/document/document-model.ts b/packages/designer/src/document/document-model.ts index 1c6a5590f..13cde0e05 100644 --- a/packages/designer/src/document/document-model.ts +++ b/packages/designer/src/document/document-model.ts @@ -33,7 +33,7 @@ export class DocumentModel { /** * 根节点 类型有:Page/Component/Block */ - readonly rootNode: RootNode; + rootNode: RootNode | null; /** * 文档编号 */ @@ -461,12 +461,16 @@ export class DocumentModel { * 从项目中移除 */ remove() { + this.purge(); this.project.removeDocument(this); - // todo: ... + this.designer.postEvent('document.remove', { id: this.id }); } purge() { - // todo: + this.rootNode?.purge(); + this.nodes.clear(); + this._nodesMap.clear(); + this.rootNode = null; } checkNesting(dropTarget: ParentalNode, dragObject: DragNodeObject | DragNodeDataObject): boolean { diff --git a/packages/designer/src/document/node/node.ts b/packages/designer/src/document/node/node.ts index 384b445e3..c69f780d5 100644 --- a/packages/designer/src/document/node/node.ts +++ b/packages/designer/src/document/node/node.ts @@ -679,7 +679,7 @@ export class Node { /** * 删除一个节点 - * @param node + * @param node */ removeChild(node: Node) { this.children?.delete(node); @@ -699,11 +699,11 @@ export class Node { if (this.purged) { return; } - if (this._parent) { - // should remove thisNode before purge - this.remove(useMutator); - return; - } + // if (this._parent) { + // // should remove thisNode before purge + // this.remove(useMutator); + // return; + // } this.purged = true; if (this.isParental()) { this.children.purge(useMutator); @@ -711,8 +711,8 @@ export class Node { this.autoruns?.forEach((dispose) => dispose()); this.props.purge(); this.document.internalRemoveAndPurgeNode(this); - this.document.destroyNode(this); + this.remove(useMutator); } /** @@ -862,7 +862,7 @@ export class Node { if (this.parent) { return this.parent.getSuitablePlace(node, ref); } - + return null; } /** diff --git a/packages/plugin-outline-pane/src/tree-master.ts b/packages/plugin-outline-pane/src/tree-master.ts index b89f116a2..326451958 100644 --- a/packages/plugin-outline-pane/src/tree-master.ts +++ b/packages/plugin-outline-pane/src/tree-master.ts @@ -54,6 +54,9 @@ export class TreeMaster { time: (endTime - startTime).toFixed(2), }); }); + designer.editor.on('designer.document.remove', ({ id }) => { + this.treeMap.delete(id); + }); } private toVision() {