amis icon indicating copy to clipboard operation
amis copied to clipboard

editor中列表类组件绑定字段名后,表达式编辑器中无法绑定数据

Open franckchen opened this issue 4 months ago • 1 comments

描述问题:

amis editor 列表类组件,绑定字段名后, 表达式编辑器中无法绑定数据。

复现步骤:

Editor组件中通过props传入schemas, 作为顶层数据域数据的结构描述.其中包含一个对象组成的数组(Array<Record<string, (number | string | boolean)>>), 图中代码是基于amis editor本地开发入口代码(amis-editor/examle/Editor.tsx) 中的schema添加新数据。如下图

image

在列表组件(Plugin是List2, Renderer是cards)右侧配置中设置数据绑定. 绑定至此前在Editor schema props中设置的array类型数数据.

image

列表组件中选择一个type: tpl的文字, 打开Formula编辑器, 意图绑定数组中对象的一个文字成员.

image

此时发现编辑器中无法选择并关联数据, 无候选, 无法识别书对象的schema

image

做代码分析时发现, 发现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本地开发入口样例代码修改而来)

image image image image

对于amis editor了解程度有限, 不知道是无掌握使用方式,还是此现象是Bug. 预期是列表组件或自研的lisComponent类编辑器插件(renderer + plugin)能够识别并关联上Editor schema props中设置的数组型数据, 列表中的成员可以选择并使用数组中的对象下的成员.目前无法实现。

franckchen avatar Oct 13 '24 13:10 franckchen