Skip to content

内置 Form 参考

下面参考仅用于默认表单,如果你更换了其他 UI库 的表单,则请以其文档为准。

Form

表单组件。

FormProps

属性描述类型默认值
model表单数据对象object-
rules表单验证规则Record<string, Rule>-
colon配置 Form.Item 的 colon 的默认值boolean-
hideRequiredMark隐藏所有表单项的必选标记boolean-
labelAlign统一设置左侧文本对齐'left' or 'center' or 'right'-
labelCol统一设置左侧文本的flex占比number2
wrapperCol统一设置输入框的flex占比number-
validateTrigger统一设置字段校验规则 onBlur 文本框失去焦点时校验/onValueChange 数值更改时校验/onSubmit 提交时校验(默认)ValidTriggerfalse
showLabel是否显左边标题booleantrue
name表单的名称string-

Events

事件名描述参数
finish提交表单且数据验证成功后回调事件-
finishFailed提交表单且数据验证失败后回调事件-
submit数据验证成功后回调事件-

Form

实例方法。

clearValidate

清空指定属性的校验结果。

参数描述类型必填
name指定属性名称,不填为整个表单`stringstring[]`

resetFields

重置属性的值。

参数描述类型必填
name指定属性名称,不填为整个表单`stringstring[]`

validate

对指定属性进行校验。

参数描述类型必填
name指定属性名称,不填为整个表单`stringstring[]`

scrollToField

滚动表单页面至指定属性。

参数描述类型必填
name属性名称string

submit

手动提交表单。

参数描述类型必填
valid是否需要校验表单,默认 truevalid

FormItem

表单条目组件。

FormItemProps

属性描述类型默认值
label输入框左侧文本string-
name名称,作为提交表单时的标识符object-
disabled是否禁用输入框booleanfalse
center是否内容垂直居中booleantrue
colon是否在 label 后面添加冒号booleantrue
required是否必填booleanfalse
showRequiredBadge是否显示表单必填星号booleanfalse
labelAlign左侧文本对齐'left' or 'center' or 'right'-
labelCol左侧文本的flex占比{ span?: number, offset?: number }-
wrapperCol输入框的flex占比{ span?: number, offset?: number }-
labelStyle左侧文本的样式object-
labelColor左侧文本的颜色string-
labelDisableColor左侧文本的禁用颜色string-
validateTrigger设置字段校验的时机 onBlur 文本框失去焦点时校验/onValueChange 数值更改时校验/onSubmit 提交时校验(默认)ValidTrigger-
showLabel是否显左边标题booleantrue
noBottomMargin是否去掉底部编辑booleanfalse

FormContext

用于表单校验。仅用于默认表单,如果你更换了其他 UI库 的表单,则请以其文档的自定义表单为准。

useInjectFormItemContext()

用于表单项的注册,用法:

vue
<template>
  <input
    :type="password?'password':'text'" 
    :value="value"
    @blur="onBlur"
    @update:modelValue="(e: string) => onValueUpdate(e)"
    @change="(e: Event) => onValueUpdate((e.target as HTMLInputElement).value)"
  />
</template>

<script lang="ts" setup>
import { useInjectFormItemContext } from "../DynamicFormBasicControls";

defineProps({
  value: {
    type: String,
    default: "",
  },
});

const emit = defineEmits([ 'update:value' ]);

//注册这个表单的组件
const formContext = useInjectFormItemContext();

function onBlur() {
  //反馈失去焦点事件,用于表单验证
  formContext.onFieldBlur();
}
function onValueUpdate(v: string) {
  emit('update:value', v);
  
  //反馈数据到表单在
  formContext.onFieldChange(v);
}
</script>

Released under the MIT License.