From e666853b1e9a378f97ddbe1eab8c779d0d6141e5 Mon Sep 17 00:00:00 2001 From: kangwei Date: Sun, 12 Jul 2020 20:39:41 +0800 Subject: [PATCH] support addon to props --- packages/designer/src/document/node/node.ts | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/packages/designer/src/document/node/node.ts b/packages/designer/src/document/node/node.ts index 952f3df01..06891d433 100644 --- a/packages/designer/src/document/node/node.ts +++ b/packages/designer/src/document/node/node.ts @@ -101,7 +101,7 @@ export class Node { /** * @deprecated */ - private _addons: { [key: string]: any } = {}; + private _addons: { [key: string]: { exportData: () => any; isProp: boolean; } } = {}; @obx.ref private _parent: ParentalNode | null = null; /** * 父级节点 @@ -544,7 +544,11 @@ export class Node { Object.keys(this._addons).forEach((key) => { const addon = this._addons[key]; if (addon) { - _extras_[key] = addon(); + if (addon.isProp) { + (props as any)[key] = addon.exportData(); + } else { + _extras_[key] = addon.exportData(); + } } }); @@ -752,19 +756,19 @@ export class Node { getAddonData(key: string) { const addon = this._addons[key]; if (addon) { - return addon(); + return addon.exportData(); } return this.getExtraProp(key)?.value; } /** * @deprecated */ - registerAddon(key: string, exportData: any) { + registerAddon(key: string, exportData: () => any, isProp: boolean = false) { if (this._addons[key]) { throw new Error(`node addon ${key} exist`); } - this._addons[key] = exportData; + this._addons[key] = { exportData, isProp }; } getRect(): DOMRect | null {