import{ax as i,z as a,A as t,b2 as e}from"./chunks/framework.DkLJC2NO.js";const c=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(p,s,d,h,o,r){return t(),a("div",null,[...s[0]||(s[0]=[e(`

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
await dataSourceManager.init([
  {
    id: 'ds_1',
    type: 'base',
    fields: [{ name: 'count', defaultValue: 0 }]
  },
  {
    id: 'http_1',
    type: 'http',
    options: { url: '/api/data' }
  }
]);

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

onDataChange

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

offDataChange

destroy

事件

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

事件名说明回调参数
change数据源数据变化(dsId, path, newVal)
init所有数据源初始化完成
registered-all所有数据源注册完成
update-data更新节点数据(node, sourceId)

事件监听示例

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

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