diff --git a/packages/data-source/src/DataSourceManager.ts b/packages/data-source/src/DataSourceManager.ts index db05b2cb..03e4dcfc 100644 --- a/packages/data-source/src/DataSourceManager.ts +++ b/packages/data-source/src/DataSourceManager.ts @@ -22,12 +22,18 @@ import EventEmitter from 'events'; import { cloneDeep } from 'lodash-es'; import type { DataSourceSchema, default as TMagicApp, DisplayCond, Id, MNode } from '@tmagic/core'; -import { compiledNode, NODE_CONDS_KEY } from '@tmagic/core'; +import { compiledNode, getDefaultValueFromFields, NODE_CONDS_KEY } from '@tmagic/core'; import { SimpleObservedData } from './observed-data/SimpleObservedData'; import { DataSource, HttpDataSource } from './data-sources'; import { getDeps } from './depsCache'; -import type { ChangeEvent, DataSourceManagerData, DataSourceManagerOptions, ObservedDataClass } from './types'; +import type { + ChangeEvent, + DataSourceManagerData, + DataSourceManagerOptions, + ObservedDataClass, + SchemaListMap, +} from './types'; import { compiledNodeField, compliedConditions, compliedIteratorItem, createIteratorContentData } from './utils'; class DataSourceManager extends EventEmitter { @@ -36,7 +42,7 @@ class DataSourceManager extends EventEmitter { ['http', HttpDataSource], ]); private static ObservedDataClass: ObservedDataClass = SimpleObservedData; - private static waitInitSchemaList = new Map>(); + private static waitInitSchemaList = new Map(); public static register(type: string, dataSource: T) { DataSourceManager.dataSourceClassMap.set(type, dataSource); @@ -171,6 +177,9 @@ class DataSourceManager extends EventEmitter { listMap[config.type] = [config]; } + // 保证初始化时的第一次编译有值 + this.data[config.id] = getDefaultValueFromFields(config.fields); + return; } diff --git a/packages/data-source/src/types.ts b/packages/data-source/src/types.ts index 6916ac6e..e2fcea54 100644 --- a/packages/data-source/src/types.ts +++ b/packages/data-source/src/types.ts @@ -65,3 +65,7 @@ export interface ChangeEvent { export type AsyncDataSourceResolveResult = { default: T; }; + +export interface SchemaListMap { + [key: string]: DataSourceSchema[]; +}