Skip to content

propsService方法

setDisabledDataSource

  • 参数:

    • {boolean} disabled 是否禁用数据源
  • 返回:

    • {void}
  • 详情:

    设置是否禁用数据源(内部状态),影响 fillConfig 注入的公共配置

setDisabledCodeBlock

  • 参数:

    • {boolean} disabled 是否禁用代码块
  • 返回:

    • {void}
  • 详情:

    设置是否禁用代码块(内部状态),影响 fillConfig 注入的公共配置

getDisabledDataSource

  • 返回:

    • {boolean} 是否禁用数据源
  • 详情:

    获取是否禁用数据源的内部状态

getDisabledCodeBlock

  • 返回:

    • {boolean} 是否禁用代码块
  • 详情:

    获取是否禁用代码块的内部状态

fillConfig

  • 扩展支持

  • 参数:

    • {FormConfig} config
    • {string} labelWidth 表单项 label 宽度,默认 '80px'
    查看 FormConfig 及关联类型定义
    ts
    export type FormConfig<T = never> = FormItemConfig<T>[];
    ts
    export type FormItemConfig<T = never> = ChildConfig<T> | DynamicTypeConfig | EditorChildConfig<T> | T;
    ts
    export type ChildConfig<T = never> =
      | ContainerCommonConfig<T>
      | TabConfig<T>
      | RowConfig<T>
      | FieldsetConfig<T>
      | PanelConfig<T>
      | TableConfig
      | GroupListConfig<T>
      | StepConfig<T>
      | DisplayConfig
      | TextConfig
      | NumberConfig
      | NumberRangeConfig
      | HiddenConfig
      | LinkConfig<T>
      | DaterangeConfig
      | TimerangeConfig
      | SelectConfig
      | CascaderConfig
      | HtmlField
      | DateConfig
      | ColorPickConfig
      | TimeConfig
      | DateTimeConfig
      | CheckboxConfig
      | SwitchConfig
      | RadioGroupConfig
      | CheckboxGroupConfig
      | TextareaConfig
      | DynamicFieldConfig
      | ComponentConfig
      | FlexLayoutConfig<T>;
    ts
    export interface DynamicTypeConfig extends FormItem {
      type: TypeFunction;
      [key: string]: any;
    }
    ts
    export interface FormItem {
      /** vnode的key值,默认是遍历数组时的index */
      __key?: string | number;
      /** 表单域标签的的宽度,例如 '50px'。支持 auto。 */
      labelWidth?: string | number;
      /** label 标签的title属性 */
      labelTitle?: string;
      className?: string;
      /** 字段名 */
      name?: string | number;
      /** 额外的提示信息,和 help 类似,当提示文案同时出现时,可以使用这个。 */
      extra?: string | FilterFunction<string>;
      /** 配置提示信息 */
      tooltip?: ToolTipConfigType | FilterFunction<ToolTipConfigType>;
      /** 是否置灰 */
      disabled?: boolean | FilterFunction;
      /** 使用表单中的值作为key,例如配置了text,则使用model.text作为key */
      key?: string;
      /** 是否显示 */
      display?: boolean | 'expand' | FilterFunction<boolean | 'expand'>;
      /** 值发生改变时调用的方法 */
      onChange?: OnChangeHandler;
      /** label 标签的文本 */
      text?: string | FilterFunction<string>;
      /** 右侧感叹号 */
      tip?: string;
    
      filter?: 'number' | OnChangeHandler;
      /** 是否去除首尾空格 */
      trim?: boolean;
      /** 默认值 */
      defaultValue?: any | DefaultValueFunction;
      /** 表单验证规则 */
      rules?: Rule[];
      extensible?: boolean;
      dynamicKey?: string;
      /** 是否需要显示`展开更多配置` */
      expand?: boolean;
      style?: Record<string, any>;
      fieldStyle?: Record<string, any>;
      labelPosition?: 'top' | 'left' | 'right';
    }
  • 返回:

    • {Promise<FormConfig>}
  • 详情:

    扩展属性表单配置DSL,用于为所有表单配置添加公共配置

setPropsConfigs

  • 参数:

    • {Record<string, FormConfig | PropsFormConfigFunction>} configs
    查看 PropsFormConfigFunction 类型定义
    ts
    export type PropsFormConfigFunction = (data: { editorService: EditorService }) => FormConfig;
  • 返回:

    • {void}
  • 详情:

    设置组件与属性表单配置DSL的对应关系

setPropsConfig

  • 扩展支持

  • 参数:

    • {string} type 组件类型
    • {FormConfig} config 属性表单配置DSL
  • 返回:

    • {Promise<void>}
  • 详情:

    为指定类型组件设置组件属性表单配置

getPropsConfig

  • 扩展支持

  • 参数:

    • {string} type 组件类型
    • {Object} data 可选参数
      • {MNode | null} node 当前节点
    查看 MNode 及关联类型定义
    ts
    export type MNode = MComponent | MContainer | MIteratorContainer | MPage | MApp | MPageFragment;
    ts
    export interface MComponent {
      /** 组件ID,默认为${type}_${number}}形式, 如:page_123 */
      id: Id;
      /** 组件类型 */
      type?: string;
      /** 组件显示名称 */
      name?: string;
      /** 组件根Dom上的class */
      className?: string;
      /* 关联事件集合 */
      events?: EventConfig[];
      /** 是否隐藏 */
      visible?: boolean;
      /** 显示条件中配置的数据源条件的编译结果 */
      condResult?: boolean;
      /** 组件根Dom的style */
      style?: StyleSchema;
      [NODE_CONDS_KEY]?: DisplayCond[];
      [NODE_CONDS_RESULT_KEY]?: boolean;
      [key: string]: any;
    }
    ts
    export interface MContainer extends MComponent {
      /** 容器类型,默认为'container' */
      type?: NodeType.CONTAINER | string;
      /** 容器子元素 */
      items: (MComponent | MContainer)[];
    }
    ts
    export interface MIteratorContainer extends MContainer {
      type: 'iterator-container';
      iteratorData: any[];
      dsField: string[];
      itemConfig: {
        layout: string;
        [NODE_CONDS_KEY]: DisplayCond[];
        style: Record<string, string | number>;
      };
    }
    ts
    export interface MPage extends MContainer {
      /** 页面类型 */
      type: NodeType.PAGE;
    }
    ts
    export interface MApp extends MComponent {
      /** App页面类型,app作为整个结构的根节点;有且只有一个 */
      type: NodeType.ROOT;
      /** */
      items: (MPage | MPageFragment)[];
      /** 代码块 */
      codeBlocks?: CodeBlockDSL;
    
      dataSources?: DataSourceSchema[];
    
      dataSourceDeps?: DataSourceDeps;
      dataSourceCondDeps?: DataSourceDeps;
    }
    ts
    export interface MPageFragment extends MContainer {
      /** 页面类型 */
      type: NodeType.PAGE_FRAGMENT;
    }
  • 返回:

    • {Promise<FormConfig>}
  • 详情:

    获取指点类型的组件属性表单配置

setPropsValues

  • 参数:

    • {Record<string, MNode>} values
  • 返回:

    • {void}
  • 详情:

    设置组件与属性表单默认值的对应关系

setPropsValue

  • 参数:

    • {string} type 组件类型
    • {MNode} value 组件初始值
  • 返回:

    • {Promise<void>}
  • 详情:

    设置组件与属性表单默认值的对应关系

getPropsValue

  • 扩展支持

  • 参数:

    • {string} type 组件类型
    • {Object} defaultValue 组件默认值,可选
  • 返回:

    • {Promise<MNode>} 合并默认配置后的节点对象
  • 详情:

    获取指定类型的组件初始值,会合并 getDefaultPropsValue 与已注册的 propsValue,并自动生成 id

createId

  • 扩展支持

  • 参数:

    • {string | number} type 组件类型
  • 返回:

    • {string} 生成的组件id(格式为 type_guid
  • 详情:

    生成组件id

setNewItemId

  • 扩展支持

  • 参数:

    • {MNode} config
    • {boolean} force 是否强制设置新ID,默认 true
  • 返回:

    • {MNode} 处理后的节点
  • 详情:

    将组件与组件的子元素配置中的id都设置成一个新的ID

getDefaultPropsValue

  • 扩展支持

  • 参数:

    • {string} type 组件类型
  • 返回:

    • {Object} 默认属性配置对象(包含 typestylename 等基础字段,page/container 类型会额外包含 layoutitems
  • 详情:

    获取默认属性配置

replaceRelateId

  • 参数:

    • {MNode[]} originConfigs 原始组件配置
    • {MNode[]} targetConfigs 待替换的组件配置
    • {TargetOptions} collectorOptions 依赖收集器配置
  • 返回:

    • {void}
  • 详情:

    根据 setNewItemId 收集到的新旧 id 映射,替换目标配置中关联引用的 id(用于复制粘贴时保持组件间的关联依赖)

clearRelateId

  • 返回:

    • {void}
  • 详情:

    清除 setNewItemId 维护的新旧 id 映射关系

resetState

  • 详情:

    清空所有组件的属性配置 (propsConfigMap) 与初始值 (propsValueMap)。

    TIP

    本方法不会重置 disabledDataSource / disabledCodeBlock 标记,也不会清空 relateIdMap;如需清理后两者,请分别调用 setDisabledDataSource / setDisabledCodeBlockclearRelateId

destroy

  • 详情:

    销毁propsService

use

使用中间件的方式扩展方法,上述方法中标记有扩展支持: 是的方法都支持使用use扩展

usePlugin

  • 详情:

相对于use, usePlugin支持更加灵活更加细致的扩展, 上述方法中标记有扩展支持: 是的方法都支持使用usePlugin扩展

每个支持扩展的方法都支持定制before、after两个hook来干预原有方法的行为,before可以用于修改传入参数,after可以用于修改返回的值

removeAllPlugins

  • 详情:

删掉当前设置的所有扩展

Powered by 腾讯视频会员平台技术中心