From 1f581b81f6dedbf3c5be4b7624d8b84b6c3977bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9E=97=E7=86=A0?= Date: Wed, 22 Jul 2020 13:02:56 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20VC-Filter=E7=BB=84=E4=BB=B6=E7=9A=84?= =?UTF-8?q?=E9=80=82=E9=85=8D=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/document/node/node-children.ts | 37 ++++++++++++++++--- .../designer/src/document/node/props/props.ts | 12 ++++++ 2 files changed, 43 insertions(+), 6 deletions(-) diff --git a/packages/designer/src/document/node/node-children.ts b/packages/designer/src/document/node/node-children.ts index aeb306a9b..dc6bd2aac 100644 --- a/packages/designer/src/document/node/node-children.ts +++ b/packages/designer/src/document/node/node-children.ts @@ -132,6 +132,7 @@ export class NodeChildren { } this.emitter.emit('change'); + this.reportModified(node, this.owner, { type: 'insert' }); // check condition group if (node.conditionGroup) { @@ -288,24 +289,48 @@ export class NodeChildren { return; } this.purged = true; - this.children.forEach(child => child.purge()); + this.children.forEach((child) => child.purge()); } get [Symbol.toStringTag]() { // 保证向前兼容性 - return "Array"; + return 'Array'; + } + + /** + * @deprecated + * 为了兼容vision体系存量api + */ + getChildrenArray() { + return this.children; } private reportModified(node: Node, owner: Node, options = {}) { - if (!node) { return; } - if (node.isRoot()) { return; } + if (!node) { + return; + } + if (node.isRoot()) { + return; + } const callbacks = owner.componentMeta.getMetadata().experimental?.callbacks; if (callbacks?.onSubtreeModified) { - callbacks?.onSubtreeModified.call(node, owner, options); + try { + callbacks?.onSubtreeModified.call(node, owner, options); + } catch (e) { + console.error('error when excute experimental.callbacks.onNodeAdd', e); + } + } + + if (callbacks?.onNodeAdd && options?.type === 'insert') { + try { + callbacks?.onNodeAdd.call(owner, node, owner); + } catch (e) { + console.error('error when excute experimental.callbacks.onNodeAdd', e); + } } if (owner.parent && !owner.parent.isRoot()) { - this.reportModified(node, owner.parent, options); + this.reportModified(node, owner.parent, options); } } } diff --git a/packages/designer/src/document/node/props/props.ts b/packages/designer/src/document/node/props/props.ts index 1da17eda7..19b8b30c7 100644 --- a/packages/designer/src/document/node/props/props.ts +++ b/packages/designer/src/document/node/props/props.ts @@ -329,4 +329,16 @@ export class Props implements IPropParent { setPropValue(path: string, value: any) { this.getProp(path, true)!.setValue(value); } + + /** + * @deprecated + * 兼容vision体系 + */ + getNode() { + const nodeForVision = this.owner; + nodeForVision.getChildren = () => { + return this.owner?.getChildren()?.getChildrenArray() || []; + }; + return nodeForVision; + } }