From 5cfd57d16ba6f82888ee5b8379c2a59531d04b5b Mon Sep 17 00:00:00 2001 From: "mario.gk" Date: Tue, 21 Jul 2020 20:10:53 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E4=BC=98=E5=8C=96=20setting-filed?= =?UTF-8?q?=20settingFieldCollector?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/designer/setting/setting-field.ts | 20 +++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/packages/designer/src/designer/setting/setting-field.ts b/packages/designer/src/designer/setting/setting-field.ts index 5b11022d1..956de1c8d 100644 --- a/packages/designer/src/designer/setting/setting-field.ts +++ b/packages/designer/src/designer/setting/setting-field.ts @@ -5,6 +5,18 @@ import { SettingEntry } from './setting-entry'; import { computed, obx } from '@ali/lowcode-editor-core'; import { cloneDeep } from '@ali/lowcode-utils'; +function getSettingFieldCollectorKey(parent: SettingEntry, config: FieldConfig) { + let top = parent; + const path = [config.name]; + while (top !== parent.top) { + if (top instanceof SettingField && top.type !== 'group') { + path.unshift(top.name); + } + top = top.parent; + } + return path.join('.'); +} + export class SettingField extends SettingPropEntry implements SettingEntry { readonly isSettingField = true; readonly isRequired: boolean; @@ -54,12 +66,8 @@ export class SettingField extends SettingPropEntry implements SettingEntry { if (items && items.length > 0) { this.initItems(items, settingFieldCollector); } - if (settingFieldCollector && config.name) { - if (parent && parent instanceof SettingField && parent.type !== 'group') { - settingFieldCollector((parent as SettingField).name + '.' + config.name, this); - } else { - settingFieldCollector(config.name, this); - } + if (this.type !== 'group' && settingFieldCollector && config.name) { + settingFieldCollector(getSettingFieldCollectorKey(parent, config), this); } // compatiable old config