feat(Form): support rule formatter

This commit is contained in:
陈嘉涵
2020-02-23 19:56:44 +08:00
parent e48e5d47cd
commit d878354ebf
4 changed files with 52 additions and 17 deletions
+21 -17
View File
@@ -120,16 +120,6 @@ export default createComponent({
formValue() {
return this.children ? this.children.value : this.value;
},
formValueEmpty() {
const { formValue } = this;
if (Array.isArray(formValue)) {
return !formValue.length;
}
return !formValue;
},
},
methods: {
@@ -147,9 +137,9 @@ export default createComponent({
}
},
runValidator(rule) {
runValidator(rule, value) {
return new Promise(resolve => {
const returnVal = rule.validator(this.formValue, rule);
const returnVal = rule.validator(value, rule);
if (isPromise(returnVal)) {
return returnVal.then(resolve);
@@ -159,11 +149,19 @@ export default createComponent({
});
},
runRuleSync(rule) {
if (rule.required && this.formValueEmpty) {
isEmptyValue(value) {
if (Array.isArray(value)) {
return !value.length;
}
return !value;
},
runSyncRule(rule, value) {
if (rule.required && this.isEmptyValue(value)) {
return false;
}
if (rule.pattern && !rule.pattern.test(this.formValue)) {
if (rule.pattern && !rule.pattern.test(value)) {
return false;
}
return true;
@@ -177,13 +175,19 @@ export default createComponent({
return;
}
if (!this.runRuleSync(rule)) {
let value = this.formValue;
if (rule.formatter) {
value = rule.formatter(value);
}
if (!this.runSyncRule(rule, value)) {
this.validateMessage = rule.message;
return;
}
if (rule.validator) {
return this.runValidator(rule).then(result => {
return this.runValidator(rule, value).then(result => {
if (result === false) {
this.validateMessage = rule.message;
}