如何防止在else if语句中重复赋值?
问题描述:
以下功能验证一个表单字段:如何防止在else if语句中重复赋值?
validateFields() {
let invalidFields = []
utils.eachDeep(this.schema, field => {
if (!field.validation) return // don't validate
else if (field.validation.isRequired && !field.value) {
field.errorMessage = 'Required field error'
invalidFields.push(field)
} else if (field.validation.minLength && field.value.length < field.validation.minLength) {
field.errorMessage = 'Minimum length error'
invalidFields.push(field)
} else {
// no errors
field.errorMessage = ''
}
})
invalidFields.length > 0
? this.isFormValid = false
: this.isFormValid = true
}
正如你可以看到我在每一个else if
语句重复invalidFields.push(field)
。我怎样才能防止这一点?
答
,如果你只是想删除其他内推()如果块,你可以这样做:
validateFields() {
let invalidFields = []
utils.eachDeep(this.schema, field => {
field.errorMessage = '';
if (!field.validation) return // don't validate
else if (field.validation.isRequired && !field.value) {
field.errorMessage = 'Required field error'
} else if (field.validation.minLength && field.value.length < field.validation.minLength) {
field.errorMessage = 'Minimum length error'
}
if(field.errorMessage){
invalidFields.push(field)
}
})
invalidFields.length > 0
? this.isFormValid = false
: this.isFormValid = true
}
+0
天才! (或者我可能太愚蠢了。) – alex
我不认为你可以给该错误信息是不同的。其他两个人有什么共同点或父母吗? –
如果在第一次遇到无效字段时可以返回false,并且使用类似every()的方法进行迭代,则甚至不需要'invalidFields'。 –
@le_m我需要一种方法来检查所有的字段验证后,表单是否无效。 – alex