feat(data-source,runtime): 数据源编译组件时新增一个参数控制是否要编辑子元素
编译时只需要关注组件本身的配置,子组件有自己的依赖,不需要由父组件来控制,但是在编辑器中就需要,因为为了不改动到编辑器中的dsl,编译后的配置是不会保存起来的,所以容器编译时需要把子组件也一同编译
This commit is contained in:
@@ -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]: {
|
||||
|
||||
Reference in New Issue
Block a user