Commit 0c0683e4e3fba64f1160737e89bcf2c704fd0dc7
Committed by
GitHub
1 parent
fa5ea60b
feat(form) : support promise for validate method #1857
Showing
1 changed file
with
17 additions
and
11 deletions
Show diff stats
src/components/form/form.vue
| @@ -57,18 +57,24 @@ | @@ -57,18 +57,24 @@ | ||
| 57 | }); | 57 | }); |
| 58 | }, | 58 | }, |
| 59 | validate(callback) { | 59 | validate(callback) { |
| 60 | - let valid = true; | ||
| 61 | - let count = 0; | ||
| 62 | - this.fields.forEach(field => { | ||
| 63 | - field.validate('', errors => { | ||
| 64 | - if (errors) { | ||
| 65 | - valid = false; | ||
| 66 | - } | ||
| 67 | - if (typeof callback === 'function' && ++count === this.fields.length) { | ||
| 68 | - callback(valid); | ||
| 69 | - } | 60 | + return new Promise(resolve => { |
| 61 | + let valid = true; | ||
| 62 | + let count = 0; | ||
| 63 | + this.fields.forEach(field => { | ||
| 64 | + field.validate('', errors => { | ||
| 65 | + if (errors) { | ||
| 66 | + valid = false; | ||
| 67 | + } | ||
| 68 | + if (++count === this.fields.length) { | ||
| 69 | + // all finish | ||
| 70 | + resolve(valid) | ||
| 71 | + if (typeof callback === 'function') { | ||
| 72 | + callback(valid); | ||
| 73 | + } | ||
| 74 | + } | ||
| 75 | + }); | ||
| 70 | }); | 76 | }); |
| 71 | - }); | 77 | + }) |
| 72 | }, | 78 | }, |
| 73 | validateField(prop, cb) { | 79 | validateField(prop, cb) { |
| 74 | const field = this.fields.filter(field => field.prop === prop)[0]; | 80 | const field = this.fields.filter(field => field.prop === prop)[0]; |