Skip to content

xtf-form-item

组件说明

xtf-form-item 是表单项组件,必须配合 xtf-form 使用。用于包裹表单控件,提供标签、校验、错误提示和联动控制,适用于表单字段布局和校验展示等场景。


基础用法

1. 基础用法

通过 label 设置标签,通过 prop 绑定校验字段:

vue
<template>
  <xtf-form :model="formData" :rules="rules" label-width="160">
    <xtf-form-item label="用户名" prop="username">
      <xtf-input v-model="formData.username" placeholder="请输入用户名" />
    </xtf-form-item>
    <xtf-form-item label="手机号" prop="phone">
      <xtf-input v-model="formData.phone" type="number" placeholder="请输入手机号" />
    </xtf-form-item>
  </xtf-form>
</template>

<script>
export default {
  data() {
    return {
      formData: { username: '', phone: '' },
      rules: {
        username: [{ required: true, message: '请输入用户名' }],
        phone: [{ required: true, message: '请输入手机号' }]
      }
    }
  }
}
</script>

2. 帮助文字与额外信息

通过 help 设置帮助文字,通过 extra 设置额外信息:

vue
<template>
  <xtf-form :model="formData" label-width="160">
    <xtf-form-item label="验证码" prop="code" help="请查看手机短信获取验证码">
      <xtf-input v-model="formData.code" placeholder="请输入验证码" />
    </xtf-form-item>
    <xtf-form-item label="金额" prop="amount" extra="单位:元">
      <xtf-input v-model="formData.amount" type="digit" placeholder="请输入金额" />
    </xtf-form-item>
  </xtf-form>
</template>

<script>
export default {
  data() {
    return {
      formData: { code: '', amount: '' }
    }
  }
}
</script>

3. 自定义标签与校验状态

默认插槽可接收校验状态和手动触发函数,命名插槽可替换标签、额外信息与帮助文本:

vue
<template>
  <xtf-form :model="model" :rules="rules">
    <xtf-form-item prop="email" feedback @validate-status-change="onStatus">
      <template #label><xtf-text text="邮箱" bold /></template>
      <template #extra><xtf-text text="必填" color="danger" /></template>
      <template #default="{ status, triggerValidate }">
        <xtf-input
          v-model="model.email"
          placeholder="name@example.com"
          @blur="triggerValidate('blur')"
        />
      </template>
      <template #help><xtf-text text="请输入常用邮箱" color="secondary" /></template>
    </xtf-form-item>
  </xtf-form>
</template>

<script>
export default {
  data() {
    return {
      model: { email: '' },
      rules: { email: [{ required: true, message: '请输入邮箱', trigger: 'blur' }] }
    }
  },
  methods: {
    onStatus(payload) {
      console.log(payload)
    }
  }
}
</script>

全部属性

属性类型默认值作用描述适用范围
labelString''标签文字标签
propString''字段名数据绑定
requiredBooleanfalse是否必填必填
helpString''帮助文字帮助
extraString''额外信息额外
errorString''手动错误信息错误
rulesArray[]校验规则校验
layoutString''布局方式布局
labelWidthString | Number''标签宽度标签
sizeString''尺寸尺寸
requiredMarkString''必填标记位置必填标记
feedbackBooleanfalse是否显示校验反馈图标反馈
validateTriggerString | Array''校验触发时机触发时机
linkageString''联动规则名联动
dependenciesString | Array''依赖字段依赖
visibleWhen / disabledWhenFunction | Object | Array | String | Number | Booleanundefined联动显示/禁用条件;函数签名 (value, model, dependencies) => Boolean联动控制
customClassString''自定义类名样式覆盖
customStyleString | Object''自定义样式动态样式覆盖

事件

事件名称触发时机回调参数参数说明
validate-status-change校验状态变化时触发({ prop, status, message })字段路径、状态和校验提示

插槽

插槽名称说明
default表单控件
label自定义标签
extra自定义额外信息
help自定义帮助文字

默认插槽参数为 { status, message, linkageState, disabled, triggerValidate, clearValidate },第三个示例展示了真实用法。


主题说明

  • 必填标记使用 danger 主题色
  • 错误信息使用 danger 主题色
  • 校验反馈图标使用 xtf-icon 组件
  • 通过 inject 获取 xtf-form 的配置

如需全局调整主题,请在 xtf-config-provider 或主题配置中覆盖相关 CSS 变量。

MIT Licensed