magiccube-vue3
Version:
vue3-js版组件库
26 lines (24 loc) • 1.01 kB
JavaScript
/**
* 遍历父级form-item组件 获取校验方法
* @param {Object} el 目标组件
* @param {Number} flag 如果是0则为当前组件本身, 大于0时为父级组件
* @returns {Object} 返回父级form-item组件的暴露出的校验方法和错误信息 以及当前组件在整个form中的key名字
*/
function mapParentEl(el, flag = 0){
const VERIFY_ITEM = ['checkbox', 'input', 'select', 'radio', 'textarea', 'city', 'date', 'job']
const componentName = el?.type?.name || ''
if(flag > 0 && componentName && VERIFY_ITEM.some(str => componentName.toLowerCase().indexOf(str) > -1)){
return {}
} else if(componentName === 'McFormItem'){
return {
fieldName: el?.props?.keyName || null,
validator: el?.exposed?.valid || null,
errorMessage: el?.provides?.errorMessageCollect || null
}
} else if(el?.parent){
return mapParentEl(el.parent, flag + 1)
} else {
return {}
}
}
export default mapParentEl