vue 中父组件获取表单子组件验证过后的数据
场景:开发中,父组件引入一个表单组件,例如点击父组件中的一个“保存”按钮,我们需要获取子组件的表单数据,而且表单有验证。
子组件中的 html 的表单代码:
<el-form :model="form" :rules="rules" ref="formName" labelWidth="100px" :validate-on-rule-change="true" ></el-form>
其中: :model="form" 中的 form 为表单绑定的数据。
子组件的表单数据中 methods 中需要添加:
methods:{ formValidate() { return new Promise((resolve, reject) => { this.$refs.formName.validate((valid) => { if (valid) { resolve(this.form); } else { setTimeout(() => { reject("error"); }); } }); }); }, }
父组件中,比如我点击了“保存”按钮之后,调用一个 handleSave 的方法,在 methods 中添加:
handleSave(){ // 其中 formTemplate 是父组件中引入表单组件的时候,定义的 ref 值 this.$refs.formTemplate[0].formValidate() .then(formRes=>{ //这里就可以处理表单验证过后的代码逻辑了 }) .catch( err=>{} ) }