From 56cec615a81db5799f4b9653f81e455d49eb8fd6 Mon Sep 17 00:00:00 2001 From: FateRiddle Date: Thu, 27 May 2021 22:49:18 +0800 Subject: [PATCH] =?UTF-8?q?fix=20=E8=A1=A8=E8=BE=BE=E5=BC=8F=E8=A7=A3?= =?UTF-8?q?=E6=9E=90=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/form-render/CHANGELOG.md | 3 ++- packages/form-render/src/utils.js | 18 ++++++++++-------- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/packages/form-render/CHANGELOG.md b/packages/form-render/CHANGELOG.md index adef62b8..64e631e6 100644 --- a/packages/form-render/CHANGELOG.md +++ b/packages/form-render/CHANGELOG.md @@ -3,6 +3,8 @@ ### 1.4.3 - [!] 修复了 range 元素的校验,清空后不再会通不过校验 +- [!] 修复了 hidden 是表达式时,即使隐藏也还是会被校验的问题 +- [!] 修复了复制后的元素与原元素值同步的问题 ### 1.4.2 @@ -29,7 +31,6 @@ - [!] fix 了列表元素上下移动后校验信息展示有误的问题(一个简单 fix,还需后续优化) - [!] fix 了列表中非 string 类型的元素类型校验一直不通过的问题 -- [!] 修复了 hidden 是表达式时,即使隐藏也还是会被校验的问题 - [!] fix 了 min = 0 时,校验信息错误的问题 #### 其他 diff --git a/packages/form-render/src/utils.js b/packages/form-render/src/utils.js index 52da7223..845a0211 100644 --- a/packages/form-render/src/utils.js +++ b/packages/form-render/src/utils.js @@ -424,7 +424,7 @@ export function parseSingleExpression(func, formData = {}, dataPath) { try { return Function(str)(); } catch (error) { - console.log(error); + console.log(error, func, dataPath); return func; } // const funcBody = func.substring(2, func.length - 2); @@ -479,16 +479,21 @@ export const parseAllExpression = (_schema, formData, dataPath) => { const schema = clone(_schema); Object.keys(schema).forEach(key => { const value = schema[key]; - if (isExpression(value)) { + if (isObject(value)) { + // TODO: dataPath 这边要处理一下,否则rootValue类的没有效果 + schema[key] = parseAllExpression(value, formData, dataPath); + } else if (isExpression(value)) { schema[key] = parseSingleExpression(value, formData, dataPath); // console.log( // formData.materialType, // dataPath, // parseSingleExpression(value, formData, dataPath) // ); - } - // 有可能叫 xxxProps - if (typeof key === 'string' && key.toLowerCase().indexOf('props') > -1) { + } else if ( + typeof key === 'string' && + key.toLowerCase().indexOf('props') > -1 + ) { + // 有可能叫 xxxProps const propsObj = schema[key]; if (isObject(propsObj)) { Object.keys(propsObj).forEach(k => { @@ -499,9 +504,6 @@ export const parseAllExpression = (_schema, formData, dataPath) => { ); }); } - } else if (isObject(value)) { - // TODO: dataPath 这边要处理一下,否则rootValue类的没有效果 - schema[key] = parseAllExpression(value, formData, dataPath); } }); return schema; -- GitLab