diff --git a/src/editor/dataset/constant/Element.ts b/src/editor/dataset/constant/Element.ts index 38c598c..9c108fa 100644 --- a/src/editor/dataset/constant/Element.ts +++ b/src/editor/dataset/constant/Element.ts @@ -45,7 +45,8 @@ export const EDITOR_ELEMENT_ZIP_ATTR: Array = [ 'height', 'url', 'colgroup', - 'valueList' + 'valueList', + 'control' ] export const TEXTLIKE_ELEMENT_TYPE: ElementType[] = [ diff --git a/src/editor/utils/element.ts b/src/editor/utils/element.ts index 491f6bd..d03254b 100644 --- a/src/editor/utils/element.ts +++ b/src/editor/utils/element.ts @@ -222,6 +222,31 @@ export function zipElementList(payload: IElement[]): IElement[] { } hyperlinkElement.valueList = zipElementList(valueList) element = hyperlinkElement + } else if (element.type === ElementType.CONTROL) { + // 控件处理 + const controlId = element.controlId + const control = element.control! + const controlElement: IElement = { + type: ElementType.CONTROL, + value: '', + control + } + const valueList: IElement[] = [] + while (e < elementList.length) { + const controlE = elementList[e] + if (controlId !== controlE.controlId) { + e-- + break + } + if (controlE.controlComponent === ControlComponent.VALUE) { + delete controlE.type + delete controlE.control + valueList.push(controlE) + } + e++ + } + controlElement.control!.value = zipElementList(valueList) + element = controlElement } // 组合元素 const pickElement = pickElementAttr(element)