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

DataSource(基础数据源)

DataSource@tmagic/data-source 的基础数据源类,用于静态数据管理。

构造函数

typescript
new DataSource(options: DataSourceOptions)

DataSourceOptions

参数类型说明
schemaDataSourceSchema数据源配置
appTMagicApp应用实例
initialDataRecord<string, any>初始数据(可选)
useMockboolean使用 Mock 数据(可选)
requestRequestFunction请求函数(可选)
ObservedDataClassObservedDataClass观察者数据类(可选)

DataSourceSchema

参数类型说明
idstring数据源 ID
type'base'数据源类型
titlestring数据源标题(可选)
descriptionstring数据源描述(可选)
fieldsDataSchema[]字段配置
methodsCodeBlockContent[]自定义方法配置(可选)
mocksMockSchemaMock 数据配置(可选)
eventsEventConfig[]事件配置(可选)

属性

属性类型说明
idstring数据源 ID(只读)
typestring数据源类型,值为 'base'
schemaDataSourceSchema配置 schema
fieldsDataSchema[]字段配置
methodsCodeBlockContent[]自定义方法配置
dataany当前数据
isInitboolean是否已初始化

实例方法

setData

typescript
// 设置整个数据
ds.setData({ name: 'test', count: 10 });

// 设置特定路径的数据
ds.setData('newValue', 'user.name');

setValue

typescript
ds.setValue('user.age', 25);

setFields

setMethods

onDataChange

typescript
ds.onDataChange('user.name', (payload) => {
  // SimpleObservedData 下 payload 形如 { updateData, path }
  console.log('user.name 变更,最新值:', ds.getData('user.name'));
});

offDataChange

getDefaultData

init

destroy

事件

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

事件名说明回调参数
change数据变化时触发(changeEvent: ChangeEvent)ChangeEvent 形如 { updateData, path? }

示例

typescript
ds.on('change', (changeEvent) => {
  console.log('数据已变化', changeEvent.updateData, changeEvent.path);
});

字段配置 (DataSchema)

参数类型说明
namestring字段名
typestring字段类型
titlestring字段标题(可选)
descriptionstring字段描述(可选)
defaultValueany默认值(可选)
fieldsDataSchema[]子字段(对象类型时)(可选)

字段配置示例

typescript
const schema = {
  id: 'user_ds',
  type: 'base',
  fields: [
    { name: 'id', type: 'number', defaultValue: 0 },
    { name: 'name', type: 'string', defaultValue: '' },
    {
      name: 'profile',
      type: 'object',
      fields: [
        { name: 'avatar', type: 'string' },
        { name: 'bio', type: 'string' }
      ]
    }
  ]
};
`,41)])])}const E=a(d,[["render",l]]);export{c as __pageData,E as default};