mirror of
https://github.com/Tencent/tmagic-editor.git
synced 2026-01-27 20:38:11 +00:00
5.9 KiB
5.9 KiB
DataSourceManager
DataSourceManager 是 @tmagic/data-source 的核心类,用于管理所有数据源的生命周期、数据编译和事件分发。
构造函数
new DataSourceManager(options: DataSourceManagerOptions)
DataSourceManagerOptions
| 参数 | 类型 | 说明 |
|---|---|---|
app |
TMagicApp |
应用实例 |
initialData |
DataSourceManagerData |
初始数据(可选,用于 SSR) |
useMock |
boolean |
是否使用 Mock 数据(可选) |
属性
| 属性 | 类型 | 说明 |
|---|---|---|
app |
TMagicApp |
应用实例 |
dataSourceMap |
Map<string, DataSource> |
数据源映射表 |
data |
DataSourceManagerData |
所有数据源的数据 |
initialData |
DataSourceManagerData |
初始化数据 |
useMock |
boolean |
是否使用 Mock 数据 |
静态方法
register
-
参数:
{string} type数据源类型{typeof DataSource} dataSourceClass数据源类
-
返回:
{void}
-
详情:
注册自定义数据源类型。
-
示例:
import { DataSourceManager } from '@tmagic/data-source';
class CustomDataSource extends DataSource {
// 自定义实现
}
DataSourceManager.register('custom', CustomDataSource);
getDataSourceClass
-
参数:
{string} type数据源类型
-
返回:
{typeof DataSource | undefined}
-
详情:
获取已注册的数据源类。
clearDataSourceClass
-
返回:
{void}
-
详情:
清除所有已注册的数据源类(保留
base和http)。
registerObservedData
-
参数:
{ObservedDataClass} observedDataClass观察者数据类
-
返回:
{void}
-
详情:
注册自定义的观察者数据类。
实例方法
init
-
参数:
{DataSourceSchema[]} ds数据源配置数组
-
返回:
{Promise<void>}
-
详情:
初始化数据源,会创建所有配置的数据源实例并初始化。
-
示例:
await dataSourceManager.init([
{
id: 'ds_1',
type: 'base',
fields: [{ name: 'count', defaultValue: 0 }]
},
{
id: 'http_1',
type: 'http',
options: { url: '/api/data' }
}
]);
get
-
参数:
{string} id数据源 ID
-
返回:
{DataSource | undefined}
-
详情:
获取指定 ID 的数据源实例。
-
示例:
const ds = dataSourceManager.get('ds_1');
addDataSource
-
参数:
{DataSourceSchema} config数据源配置
-
返回:
{DataSource}
-
详情:
添加新的数据源。
-
示例:
const ds = dataSourceManager.addDataSource({
id: 'new_ds',
type: 'base',
fields: []
});
removeDataSource
-
参数:
{string} id数据源 ID
-
返回:
{void}
-
详情:
移除指定的数据源。
setData
-
参数:
{DataSourceSchema} ds数据源配置{ChangeEvent} changeEvent变化事件(可选)
-
返回:
{void}
-
详情:
设置数据源数据。
updateSchema
-
参数:
{DataSourceSchema[]} schemas数据源配置数组
-
返回:
{Promise<void>}
-
详情:
更新数据源 DSL 配置,会自动处理新增、更新和删除。
compiledNode
-
参数:
{MNode} node节点配置{string} sourceId数据源 ID(可选){boolean} deep是否深度编译(可选)
-
返回:
{MNode}
-
详情:
编译节点 DSL 中的数据源配置,将数据源引用替换为实际值。
-
示例:
const compiledNode = dataSourceManager.compiledNode({
id: 'text_1',
type: 'text',
text: '${ds_1.username}'
});
// compiledNode.text 会被替换为实际的用户名
compliedConds
-
参数:
{MNode} node节点配置{object} data数据上下文(可选)
-
返回:
{boolean}
-
详情:
编译显示条件,返回节点是否应该显示。
-
示例:
const shouldShow = dataSourceManager.compliedConds(node);
compliedIteratorItemConds
-
参数:
{object} itemData迭代项数据{MNode} node节点配置{string} field条件字段名
-
返回:
{boolean}
-
详情:
编译迭代器项的显示条件。
compliedIteratorItems
-
参数:
{object} itemData迭代项数据{MNode[]} nodes节点配置数组{string} field字段名
-
返回:
{MNode[]}
-
详情:
编译迭代器项的节点配置。
onDataChange
-
参数:
{string} id数据源 ID{string} path数据路径{Function} callback回调函数
-
返回:
{void}
-
详情:
监听数据源数据变化。
-
示例:
dataSourceManager.onDataChange('ds_1', 'user.name', (newVal) => {
console.log('用户名变更:', newVal);
});
offDataChange
-
参数:
{string} id数据源 ID{string} path数据路径{Function} callback回调函数
-
返回:
{void}
-
详情:
取消监听数据源数据变化。
destroy
-
返回:
{void}
-
详情:
销毁数据源管理器,清理所有数据源。
事件
DataSourceManager 继承自 EventEmitter,支持以下事件:
| 事件名 | 说明 | 回调参数 |
|---|---|---|
change |
数据源数据变化 | (dsId, path, newVal) |
init |
所有数据源初始化完成 | 无 |
registered-all |
所有数据源注册完成 | 无 |
update-data |
更新节点数据 | (node, sourceId) |
事件监听示例
dataSourceManager.on('change', (dsId, path, newVal) => {
console.log(`数据源 ${dsId} 的 ${path} 变更为:`, newVal);
});
dataSourceManager.on('init', () => {
console.log('所有数据源初始化完成');
});