欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 资讯 > 关于vue elementUi校验slot插槽中的表单项

关于vue elementUi校验slot插槽中的表单项

2025/6/22 13:47:59 来源:https://blog.csdn.net/qq_38828542/article/details/139766178  浏览:    关键词:关于vue elementUi校验slot插槽中的表单项

项目场景:在父组件表单中使用子组件,并使用子组件插槽功能来管理父组件的单个表单项

重点提示:这里要明确一个概念,凡是在组件内插槽的内容都属于组件管理,因此,要校验父组件使用子组件的slot插槽展示表单项,那么这个表单项的校验规则要放在子组件的表单数据中进行管理和校验

解决方案

这里涉及到作用域具名插槽功能,用来将子组件的表单数据传递给父组件

// 子组件
// 表单管理,比如父组件的slot表单项字段是customField,数据源分传递和子组件定义,自行选择<el-form ref="formRef" :model="formData" :rules="rules"><!-- 其他表单项... --><el-form-item prop="customField"><!-- 作用域具名插槽,name可以自定义,与父组件一致即可 --><slot name="customField" :formData="formData"></slot></el-form-item><!-- 其他表单项... -->
</el-form>export default {props: {// 数据源1:使用父组件传递的formData: {type: Object,default: () => ({})}},data() {return {// 数据源2:使用子组件自定义的formData: {customField},rules: {customField: [{ required: true, message: '此字段为必填项', trigger: 'blur' }]}};},methods: {// 子组件保存提交校验validateForm() {this.$refs.formRef.validate((valid) => {if (valid) {console.log('表单验证通过');// 执行后续逻辑} else {console.log('表单验证失败');}});}}
};
// 父组件 // 数据源1
<child-component :formData="parentFormData"><template #customField="{ formData }"><el-input v-model="formData.customField"></el-input></template>
</child-component>// 数据源2
<child-component><template #customField="{ formData }"><el-input v-model="formData.customField"></el-input></template>
</child-component>

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词