this.$emit('click', e) e.preventDefault()主页面中,将input传过来的信息和主页面中规定的rules值传入表单外壳组件<form/> 给表单外壳组件<form/>绑定ref,通过ref执行<form/>中的validate函数
this.$refs.form.validate((valid) => { if (valid) { console.log('验证成功') } else { console.log('验证失败') return false } })注意:validate函数的参数是一个函数,这个函数的参数是item-form组件返回的boolean值 form中,给item-form组件提供自己的this
provide() { return { form: this } },执行主页面发起的validate函数,获取所有子组件,挑选有props的(item-form),执行item-form的validate方法
validate(callback) { const tasks = this.$children[0].$children .filter((child) => child.prop) .map((child) =>child.validate()) Promise.all(tasks) .then(() => callback(true)) .catch(() => callback(false)) },item-form组件中
inject: ['form'],接收form
validate() { if (!this.prop) return //主页面填写的prop值 const value = this.form.model[this.prop] //对应prop的值 const rule = this.form.rules[this.prop] //对应的prop的规则 if (rule[0].required) { if (!value) { this.errMessage = '输入错误' return false } else { this.errMessage = '' return true } } return true },
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。