问题描述:
从待办调转到新增页面,后端组织数据返回给前端,但是部分必填的字段会返回Null,导致form组件自动校验了,看上去像点击了保存,执行前端校验一样;
问题分析
当必填的字段,手动置为undefined时,不会触发自动校验;
当设置为‘’,null时,都会触发自动校验
根本原因
el-form底层问题
问题解决
递归删除所有的空值字段
function getType ( obj ) { //todo 获取对象的类型的函数
return Object.prototype.toString.call( obj ).slice( 8, -1 );
}
function clone ( obj, deleteEmptyFields? ) { //todo 深拷贝的函数
let result, oClass = getType( obj ); //* 判断传入的数据类型
if ( oClass === 'Object' ) {
result = {};
} else if ( oClass === 'Array' ) {
result = [];
} else {
return obj;
}
for ( const i in obj ) {
const copy = obj[ i ];
if (['Object', 'Array'].includes(getType( copy )) ) {
result[ i ] = clone( copy, deleteEmptyFields );
} else {
if (deleteEmptyFields) {
if (getType( copy ) !== 'Null' && copy !== '') {
result[ i ] = copy;
}
} else {
result[ i ] = copy;
}
}
}
return result;
}