1
0
mirror of synced 2026-03-24 20:18:35 +08:00

feat(data-source,runtime): 数据源编译组件时新增一个参数控制是否要编辑子元素

编译时只需要关注组件本身的配置,子组件有自己的依赖,不需要由父组件来控制,但是在编辑器中就需要,因为为了不改动到编辑器中的dsl,编译后的配置是不会保存起来的,所以容器编译时需要把子组件也一同编译
This commit is contained in:
roymondchen
2024-03-11 20:21:10 +08:00
parent a3b41caf06
commit c68d4e05de
5 changed files with 21 additions and 12 deletions

View File

@@ -162,9 +162,16 @@ class DataSourceManager extends EventEmitter {
});
}
public compiledNode(node: MNode, sourceId?: Id) {
if (node.condResult === false) return node;
if (node.visible === false) return node;
public compiledNode({ items, ...node }: MNode, sourceId?: Id, deep = false) {
const newNode = cloneDeep(node);
if (items) {
newNode.items =
Array.isArray(items) && deep ? items.map((item) => this.compiledNode(item, sourceId, deep)) : items;
}
if (node.condResult === false) return newNode;
if (node.visible === false) return newNode;
return compiledNode(
(value: any) => {
@@ -201,7 +208,7 @@ class DataSourceManager extends EventEmitter {
return value;
},
cloneDeep(node),
newNode,
this.app.dsl?.dataSourceDeps || {},
sourceId,
);
@@ -229,7 +236,7 @@ class DataSourceManager extends EventEmitter {
return compiledNode(
(value: string) => template(value)(createIteratorContentData(itemData, dsId, fields)),
cloneDeep(item),
item,
{
[dsId]: {
[item.id]: {