baidu / amis

前端低代码框架,通过 JSON 配置就能生成各种页面。
https://baidu.github.io/amis/
Apache License 2.0
17.4k stars 2.52k forks source link

表达式编辑器默认忽略了顶层数据中的非object类型字段 #11035

Closed franckchen closed 1 month ago

franckchen commented 1 month ago

所有的代码基于amis editor 本地开发入口(amis-editor-core/examples/Editor.tsx) 修改而来

amis Editor组件的schema props中增加一个非object类型字段(名为country的string类型字段), 即顶层数据中添加一个非object类型字段。

image

默认的表达式编辑器无法识别新增的字段, 无法选择。

image

编辑器中的data或ctx中注入schema中新添加的country字段数据, 实际输入数据, 在输入框中强行关联, 预览渲染正常。

image image image

经过代码分析, 怀疑是BUG。 下属代码做可选参数的最终过滤, 从1397行,可以看出过滤掉了类型非object的参数。导致无法使用非对象类型的数据。 感觉应该先判断类型, 再过滤。如确定是此问题, 可PR

https://github.com/baidu/amis/blob/d49bd3bf37511e56d5f3e7e4d6beea37c8be5380/packages/amis-editor-core/src/util.ts#L1345-L1399

个人感觉造成这类问题的原因是amis editor长期在面向有数据容器组件的场景开发, 没有关注没有容器组件的场景。 建议在本地开发入口的代码的schema中补充上字符串类型和Array<record<string, (number | string | boolean>>类型的数据。 便于调试和发现问题

github-actions[bot] commented 1 month ago

👍 Thanks for this! 🏷 I have applied any labels matching special text in your issue.

Please review the labels and make any necessary changes.