amis
amis copied to clipboard
editor中列表类组件绑定字段名后,表达式编辑器中无法绑定数据
描述问题:
amis editor 列表类组件,绑定字段名后, 表达式编辑器中无法绑定数据。
复现步骤:
Editor组件中通过props传入schemas, 作为顶层数据域数据的结构描述.其中包含一个对象组成的数组(Array<Record<string, (number | string | boolean)>>
), 图中代码是基于amis editor本地开发入口代码(amis-editor/examle/Editor.tsx) 中的schema添加新数据。如下图
在列表组件(Plugin是List2, Renderer是cards)右侧配置中设置数据绑定. 绑定至此前在Editor schema props中设置的array类型数数据.
列表组件中选择一个type: tpl的文字, 打开Formula编辑器, 意图绑定数组中对象的一个文字成员.
此时发现编辑器中无法选择并关联数据, 无候选, 无法识别书对象的schema
做代码分析时发现, 发现EditorManager
类的getContextSchemas
方法, 忽略了基于editor schema props描述生成的DataScope
, 似乎只关注组件作用域上的schema, ${nodeId}-${type}
只可能获取组件数据域上的数据.
个人感觉应该补充代码, 显示的关注root datascope下的schema。并不确定, 如肯定, 可PR
https://github.com/baidu/amis/blob/d49bd3bf37511e56d5f3e7e4d6beea37c8be5380/packages/amis-editor-core/src/manager.ts#L2107-L2117
添加默认数据, 并基于ctx props注入Editor中, 在编辑器中强行关联、设置的话, 可以获取到数据并成功预览+渲染(以下代码基于amis editor本地开发入口样例代码修改而来)
对于amis editor了解程度有限, 不知道是无掌握使用方式,还是此现象是Bug. 预期是列表组件或自研的lisComponent类编辑器插件(renderer + plugin)能够识别并关联上Editor schema props中设置的数组型数据, 列表中的成员可以选择并使用数组中的对象下的成员.目前无法实现。