# CForm 表单组件
## 功能说明
CForm 是一个表单容器组件,用于管理表单数据、处理表单验证和提交。组件支持自动滚动到错误位置,提供了表单项变化回调和表单完成回调。
## 引用方式
```js
import { CForm } from '@components/forms/form';
```
## 组件参数
- `formData` (Object,必填):表单数据对象,用于存储表单各项的值
- `autoScrollToError` (String,可选):是否自动滚动到错误位置,默认为 off
- `on`:启用自动滚动
- `off`:禁用自动滚动
- `onChange` (Function,可选):表单项变化的回调函数,参数为变化的表单项数据
- `onFinish` (Function,可选):表单完成的回调函数,仅在提交且通过表单验证后调用,参数为整个表单数据
## 实例方法
- `$submit`:手动触发表单提交,会执行表单验证
- `$preVerify(keys, callback)`:提前验证指定的表单项,参数为表单项名称数组和回调函数
- `$setErrors(errors)`:直接设置表单错误,参数为错误对象,格式为 `{字段名: 错误信息}`
- `$setScrollTop(top)`:设置滚动位置,参数为滚动的 top 值
## 使用示例
### 基础用法
```html
```
### 自动滚动到错误位置
```html
```
### 手动提交表单
```js
// 在组件方法中调用
submitForm() {
this.$refs.form.$submit();
}
```
```html
```
### 提前验证指定表单项
```js
// 在组件方法中调用
validateFields() {
this.$refs.form.$preVerify(['username', 'email'], (passed) => {
if (passed) {
console.log('验证通过');
} else {
console.log('验证失败');
}
});
}
```
### 直接设置表单错误
```js
// 在组件方法中调用
setFormErrors() {
this.$refs.form.$setErrors({
username: '用户名已存在',
email: '邮箱格式不正确'
});
}
```
## 注意事项
1. CForm 组件需要与 CFormItem 组件配合使用,用于包装表单项
2. 表单数据对象(formData)的属性名应与 CFormItem 的 name 属性对应
3. 表单验证失败时会自动显示错误提示,并根据 autoScrollToError 设置决定是否滚动到错误位置
4. 表单验证通过后才会调用 onFinish 回调函数
5. 可以通过实例方法手动控制表单的提交、验证和错误设置