import{ax as a,z as s,A as e,b5 as t}from"./chunks/framework.V2ssSR2R.js";const k=JSON.parse('{"title":"DataSourceManager","description":"","frontmatter":{},"headers":[],"relativePath":"runtime-api/data-source/dataSourceManager.md","filePath":"runtime-api/data-source/dataSourceManager.md"}'),l={name:"runtime-api/data-source/dataSourceManager.md"};function n(d,i,r,o,h,p){return e(),s("div",null,[...i[0]||(i[0]=[t(`

DataSourceManager

DataSourceManager@tmagic/data-source 的核心类,用于管理所有数据源的生命周期、数据编译和事件分发。

构造函数

typescript
new DataSourceManager(options: DataSourceManagerOptions)

DataSourceManagerOptions

参数类型说明
appTMagicApp应用实例
initialDataDataSourceManagerData初始数据(可选,用于 SSR)
useMockboolean是否使用 Mock 数据(可选)

属性

属性类型说明
appTMagicApp应用实例
dataSourceMapMap<string, DataSource>数据源映射表
dataDataSourceManagerData所有数据源的数据
initialDataDataSourceManagerData初始化数据
useMockboolean是否使用 Mock 数据

静态方法

register

typescript
import { DataSourceManager } from '@tmagic/data-source';

class CustomDataSource extends DataSource {
  // 自定义实现
}

DataSourceManager.register('custom', CustomDataSource);

getDataSourceClass

clearDataSourceClass

registerObservedData

实例方法

init

typescript
const ds = dataSourceManager.get('ds_1');
if (ds) {
  await dataSourceManager.init(ds);
}

get

typescript
const ds = dataSourceManager.get('ds_1');

addDataSource

typescript
const ds = dataSourceManager.addDataSource({
  id: 'new_ds',
  type: 'base',
  fields: []
});

removeDataSource

setData

updateSchema

compiledNode

typescript
const compiledNode = dataSourceManager.compiledNode({
  id: 'text_1',
  type: 'text',
  text: '\${ds_1.username}'
});
// compiledNode.text 会被替换为实际的用户名

compliedConds

typescript
const shouldShow = dataSourceManager.compliedConds(node);

compliedIteratorItemConds

compliedIteratorItems

isAllDataSourceRegistered

onDataChange

typescript
dataSourceManager.onDataChange('ds_1', 'user.name', (newVal) => {
  console.log('用户名变更:', newVal);
});

offDataChange

destroy

事件

DataSourceManager 继承自 EventEmitter,支持以下事件:

事件名说明回调参数
change单个数据源数据变化(dsId: string, changeEvent: ChangeEvent)
init所有数据源初始化完成;现代分支携带 (data, errors),旧 Promise.all 分支为 (this.data)(data, errors?)
registered-all所有数据源注册完成
update-datacreateDataSourceManager 在数据变化后发出,用于通知节点重新渲染(newNodes: MNode[], sourceId: string, changeEvent: ChangeEvent, pageId: Id)

事件监听示例

typescript
dataSourceManager.on('change', (dsId, changeEvent) => {
  console.log(\`数据源 \${dsId} 变更:\`, changeEvent);
});

dataSourceManager.on('init', (data, errors) => {
  console.log('所有数据源初始化完成', data, errors);
});
`,58)])])}const g=a(l,[["render",n]]);export{k as __pageData,g as default};