From 13e7ad0b69f21b631792f985746c964f0d318327 Mon Sep 17 00:00:00 2001 From: kangwei Date: Thu, 7 Jan 2021 18:07:28 +0800 Subject: [PATCH] feat: enhance-tree modified --- packages/designer/src/document/node/node-children.ts | 3 ++- packages/designer/src/document/node/node.ts | 12 ++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/packages/designer/src/document/node/node-children.ts b/packages/designer/src/document/node/node-children.ts index a1637d3c1..530f4a4d2 100644 --- a/packages/designer/src/document/node/node-children.ts +++ b/packages/designer/src/document/node/node-children.ts @@ -120,6 +120,7 @@ export class NodeChildren { * 删除一个节点 */ delete(node: Node, purge = false, useMutator = true): boolean { + node.internalPurgeStart(); if (node.isParental()) { foreachReverse(node.children, (subNode: Node) => { subNode.remove(useMutator, purge); @@ -145,7 +146,7 @@ export class NodeChildren { document.destroyNode(node); this.emitter.emit('change'); if (useMutator) { - this.reportModified(node, this.owner, { type: 'remove', removeIndex: i, removeNode: node }); + this.reportModified(node, this.owner, { type: 'remove', propagated: false, isSubDeleting: this.owner.inPurging, removeIndex: i, removeNode: node }); } // purge 为 true 时,已在 internalSetParent 中删除了子节点 if (i > -1 && !purge) { diff --git a/packages/designer/src/document/node/node.ts b/packages/designer/src/document/node/node.ts index 7670de90f..b7346f18b 100644 --- a/packages/designer/src/document/node/node.ts +++ b/packages/designer/src/document/node/node.ts @@ -773,6 +773,18 @@ export class Node { // this.document.destroyNode(this); } + private purging: boolean = false; + internalPurgeStart() { + this.purging = true; + } + + /** + * 是否已销毁 + */ + get inPurging() { + return this.purging; + } + /** * 是否可执行某action */