写一个小项目遇到的问题
首先今天做项目时遇到的一个问题,下面代码中,如果上面的验证规则通过但是不会执行验证通过的代码,只有验证不通过才会输出else里的代码
this.$refs[formName].validate((valid) => {
//valid为true时代表所有验证规则通过
if (valid) {
//验证通过执行的代码,不执行
} else {
console.log('error submit!!')
return false
}
})
经过自己去官网查看发现是自己写验证的时候疏忽了,下面是自己错误的代码,可以看到如果验证失败,都会调用callback()方法 ,也是这个方法是触发validate()方法,所以验证不通过会触发validate()方法去执行不通过的逻辑,但是如果都通过了却什么都没执行。
var checkPrice = (rule, value, callback) => {
if (!value) {
return callback(new Error('不能为空'))
}
if (!Number.isInteger(value)) {
callback(new Error('请输入数字值'))
}
}
所以要在声明的验证规则中加入validate(),或者是callback()如果都通过了也触发validate()方法执行执行验证通过的代码,
var checkPrice = (rule, value, callback) => {
if (!value) {
return callback(new Error('不能为空'))
}
if (!Number.isInteger(value)) {
callback(new Error('请输入数字值'))
}
validate()
}