import{ax as s,z as a,A as l,b2 as t}from"./chunks/framework.DkLJC2NO.js";const c=JSON.parse('{"title":"工具函数","description":"","frontmatter":{},"headers":[],"relativePath":"runtime-api/data-source/utils.md","filePath":"runtime-api/data-source/utils.md"}'),e={name:"runtime-api/data-source/utils.md"};function n(p,i,h,o,d,r){return l(),a("div",null,[...i[0]||(i[0]=[t(`
@tmagic/data-source 导出的工具函数。
参数:
{TMagicApp} app 应用实例{boolean} useMock 是否使用 Mock 数据(可选){DataSourceManagerData} initialData 初始数据(可选)返回:
{DataSourceManager} 数据源管理器实例详情:
创建数据源管理器的工厂函数,会自动设置数据变化监听。
示例:
import { createDataSourceManager } from '@tmagic/data-source';
const dsManager = createDataSourceManager(app, false, initialData);参数:
{CondItem} cond 条件项{object} data 数据上下文返回:
{boolean} 条件是否满足详情:
编译单个显示条件。
示例:
import { compiledCondition } from '@tmagic/data-source';
const result = compiledCondition(
{ field: 'user.age', op: '>', value: 18 },
{ user: { age: 20 } }
);
console.log(result); // true参数:
{MNode} node 节点配置{object} data 数据上下文(可选)返回:
{boolean} 节点是否应该显示详情:
编译条件组,支持 AND/OR 逻辑。
参数:
{any} value 字段值{object} data 数据上下文返回:
{any} 编译后的值详情:
编译节点字段中的数据源配置。
示例:
import { compiledNodeField } from '@tmagic/data-source';
const compiled = compiledNodeField(
{ isBindDataSource: true, dataSourceId: 'ds_1', template: '\${name}' },
{ ds_1: { name: 'test' } }
);参数:
{any} value 字段值{object} data 数据上下文返回:
{any} 编译后的值详情:
编译数据源字段选择器的值。
参数:
{string} value 模板字符串{object} data 数据上下文返回:
{string} 替换后的字符串详情:
模板字符串替换,支持 \${id.field} 格式。
示例:
import { template } from '@tmagic/data-source';
const result = template(
'用户名:\${ds_1.user.name},年龄:\${ds_1.user.age}',
{ ds_1: { user: { name: '张三', age: 20 } } }
);
console.log(result); // '用户名:张三,年龄:20'参数:
{object} itemData 迭代项数据{string} dsId 数据源 ID{DataSchema[]} fields 字段配置{object} dsData 数据源数据返回:
{object} 迭代器数据上下文详情:
创建迭代器的数据上下文。
参数:
{object} options 编译选项返回:
{MNode} 编译后的节点详情:
编译迭代器项。
参数:
{MNode} node 节点配置{MApp} dsl DSL 配置返回:
{MApp} 更新后的 DSL详情:
更新 DSL 中的指定节点。
示例:
import { updateNode } from '@tmagic/data-source';
const newDsl = updateNode(
{ id: 'button_1', type: 'button', text: '新文本' },
dsl
);参数:
{MApp} dsl DSL 配置{Record<string, () => Promise<any>>} modules 数据源模块映射返回:
{Promise<void>}详情:
按需加载数据源模块。根据 DSL 中使用的数据源类型动态加载对应模块。
示例:
import { registerDataSourceOnDemand } from '@tmagic/data-source';
await registerDataSourceOnDemand(dsl, {
custom: () => import('./CustomDataSource'),
socket: () => import('./SocketDataSource')
});