vue3 通过点击父组件中的查询按钮,获取子组件中表单的数据,且子组件中要进行表单校验,给的代码详细一点儿
时间: 2023-08-18 08:33:58 浏览: 102
好的,下面是一个示例代码:
父组件模板代码:
```html
<template>
<div>
<child-form ref="childForm"></child-form>
<button @click="submit">查询</button>
</div>
</template>
```
父组件的 `submit` 方法:
```javascript
methods: {
submit() {
this.$refs.childForm.validate((valid) => {
if (valid) {
const formData = this.$refs.childForm.getFormData()
// TODO: 使用获取到的表单数据进行查询操作
} else {
console.log('表单校验不通过')
}
})
}
}
```
子组件模板代码:
```html
<template>
<el-form ref="form" :model="form" :rules="rules" label-width="100px">
<el-form-item label="名称" prop="name">
<el-input v-model="form.name"></el-input>
</el-form-item>
<el-form-item label="年龄" prop="age">
<el-input v-model.number="form.age"></el-input>
</el-form-item>
</el-form>
</template>
```
子组件的 `validate` 和 `getFormData` 方法:
```javascript
methods: {
validate(callback) {
this.$refs.form.validate(callback)
},
getFormData() {
return this.form
}
}
```
子组件的校验规则:
```javascript
data() {
return {
form: {
name: '',
age: ''
},
rules: {
name: [
{ required: true, message: '请输入名称', trigger: 'blur' }
],
age: [
{ required: true, message: '请输入年龄', trigger: 'blur' },
{ type: 'number', message: '年龄必须为数字值', trigger: 'blur' }
]
}
}
}
```
以上代码仅供参考,具体实现方式可以根据实际需求进行调整。
阅读全文