From b424abd17a0239da25e0fd57b00b3163164e0125 Mon Sep 17 00:00:00 2001 From: roymondchen Date: Wed, 2 Aug 2023 17:23:29 +0800 Subject: [PATCH] =?UTF-8?q?fix(editor):=20=E5=88=A0=E9=99=A4=E7=BB=84?= =?UTF-8?q?=E4=BB=B6=E5=90=8E=EF=BC=8C=E4=BE=9D=E8=B5=96=E6=B8=85=E9=99=A4?= =?UTF-8?q?=E5=87=BA=E7=8E=B0=E5=8F=AF=E8=83=BD=E5=87=BA=E7=8E=B0=E5=A4=A7?= =?UTF-8?q?=E9=87=8F=E9=87=8D=E5=A4=8D=E5=BE=AA=E7=8E=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/editor/src/services/dep.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/editor/src/services/dep.ts b/packages/editor/src/services/dep.ts index a74a87d9..54d29cb3 100644 --- a/packages/editor/src/services/dep.ts +++ b/packages/editor/src/services/dep.ts @@ -19,7 +19,7 @@ import { EventEmitter } from 'events'; import { reactive } from 'vue'; -import { MNode } from '@tmagic/schema'; +import { Id, MNode } from '@tmagic/schema'; type IsTarget = (key: string | number, value: any) => boolean; @@ -277,13 +277,15 @@ export class Watcher extends EventEmitter { * @param nodes 需要清除依赖的节点 */ public clear(nodes?: MNode[]) { + const clearedItemsNodeIds: Id[] = []; Object.values(this.targets).forEach((targets) => { Object.values(targets).forEach((target) => { if (nodes) { nodes.forEach((node) => { target.removeDep(node); - if (Array.isArray(node.items)) { + if (Array.isArray(node.items) && node.items.length && !clearedItemsNodeIds.includes(node.id)) { + clearedItemsNodeIds.push(node.id); this.clear(node.items); } });