Form: fix async validate bug

pull/7838/head
Allenice 2017-10-27 10:47:43 +08:00 committed by 杨奕
parent 0c47e6d308
commit 476d1c4f6e
1 changed files with 17 additions and 4 deletions

View File

@ -80,7 +80,19 @@
console.warn('[Element Warn][Form]model is required for validate to work!');
return;
}
let promise;
// if no callback, return promise
if (typeof callback !== 'function' && window.Promise) {
promise = new window.Promise((resolve, reject) => {
callback = function(valid) {
resolve(valid);
};
});
}
let valid = true;
let count = 0;
// fieldscallback
if (this.fields.length === 0 && callback) {
callback(true);
@ -90,13 +102,14 @@
if (errors) {
valid = false;
}
if (typeof callback === 'function' && ++count === this.fields.length) {
callback(valid);
}
});
});
if (typeof callback === 'function') {
callback(valid);
} else if (window.Promise) {
return Promise[valid ? 'resolve' : 'reject'](valid); // eslint-disable-line
if (promise) {
return promise;
}
},
validateField(prop, cb) {