1234567891011121314151617181920212223242526272829303132333435363738 |
- import { getCurrentInstance, onMounted } from 'vue'
- import Schema from 'async-validator'
- export default (rules = {}, formRef = 'formRef', messageRef = 'messageRef') => {
- let refs = {}
- let validator = new Schema(rules)
- onMounted(() => {
- refs = getCurrentInstance().refs
- })
-
- return {
- setRules(rules) {
- validator = new Schema(rules)
- },
- validate(data = refs[formRef] && refs[formRef].model) {
- if (data) {
- return new Promise((resolve, reject) => {
- validator.validate(data).then(() => {
- resolve()
- }).catch(({ errors, fields }) => {
- if (refs[formRef].errorType === 'message') {
- refs[messageRef].error(errors[0].message)
- } else{
- uni.showToast({
- icon: 'none',
- title: errors[0].message
- })
- }
- reject(errors, fields)
- })
- })
- } else{
- return Promise.reject('请确认form是否加了ref、model属性')
- }
- }
- }
- }
|