roymondchen 3eb8cc0614 docs: 完善 editor/form/runtime/stage 等 API 文档参数与说明
补全方法的参数类型、返回值类型与详情说明,规范字段编辑器/字段配置/运行时 API 等文档。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-07 17:33:58 +08:00

4.5 KiB
Raw Blame History

DevtoolApi

DevtoolApi@tmagic/core 提供给开发工具使用的 API 接口类。

构造函数

new DevtoolApi(options: DevtoolApiOptions)

DevtoolApiOptions

参数 类型 说明
app App 应用实例

实例方法

openPop

  • 参数:

    • {Id} popId 弹窗组件 ID
  • 返回:

    • {void}
  • 详情:

    打开指定的弹窗组件。

  • 示例:

devtoolApi.openPop('dialog_1');

setDataSourceData

  • 参数:

    • {Id} dsId 数据源 ID
    • {any} data 数据
    • {string} path 数据路径(可选)
  • 返回:

    • {void}
  • 详情:

    设置数据源的数据。

  • 示例:

// 设置整个数据源数据
devtoolApi.setDataSourceData('ds_1', { name: 'test' });

// 设置数据源的某个字段
devtoolApi.setDataSourceData('ds_1', 'newValue', 'user.name');

delDataSourceData

  • 返回:

    • {void}
  • 详情:

    当前为空实现(预留接口),由具体的开发工具/平台覆盖以实现"删除数据源数据"的能力。

requestDataSource

  • 参数:

    • {Id} dsId 数据源 ID
  • 返回:

    • {Promise<void> | void}
  • 详情:

    触发 HTTP 数据源的请求。优先调用 dataSource.refresh,否则调用 dataSource.request,再否则将 isInit 置为 false 并通过 dataSourceManager.init(ds) 重新初始化。

  • 示例:

await devtoolApi.requestDataSource('http_ds_1');

getDisplayCondRealValue

  • 参数:

    • {Id} nodeId 节点 ID
    • {DisplayCondItem} condItem 单个条件项
  • 返回:

    • {any}
  • 详情:

    获取显示条件的实际计算值。内部会以 { [NODE_CONDS_KEY]: [{ cond: [condItem] }] } 的形式调用 dataSourceManager.compliedConds

callHook

  • 参数:

    • {Id} nodeId 节点 ID
    • {string} hookName 钩子名称
    • { { params: Record<string, any> }[] } hookData 钩子数据列表,依次传给 node.runHookCode
  • 返回:

    • {Promise<void>}
  • 详情:

    调用节点的钩子函数。会按 hookData 顺序执行,每项以 item.params 作为 runHookCode 的入参。

  • 示例:

await devtoolApi.callHook('button_1', 'mounted', [
  { params: { data: 'test' } },
]);

trigger

  • 参数:

    • {Id} nodeId 节点 ID
    • {EventConfig} eventConfig 事件配置(单个,非数组)
  • 返回:

    • {void}
  • 详情:

    按节点触发事件。内部通过 app.emit(eventConfig.name, node) 触发对应事件。

  • 示例:

devtoolApi.trigger('button_1', {
  name: 'click',
  actions: [{ actionType: 'code', codeId: 'code_1' }]
});

updateDsl

  • 参数:

    • {Id} nodeId 节点 ID
    • {any} data 数据
    • {string} path 路径
  • 返回:

    • {void}
  • 详情:

    当前为空实现(预留接口),由具体的开发工具/平台覆盖以实现"按节点更新 DSL"的能力。

isValueIncludeDataSource

  • 参数:

    • {any} value 要检查的值
  • 返回:

    • {boolean}
  • 详情:

    检查值是否包含数据源引用。

  • 示例:

const hasDs = devtoolApi.isValueIncludeDataSource('${ds_1.field}');
console.log(hasDs); // true

compileDataSourceValue

  • 参数:

    • {any} value 包含数据源引用的值
  • 返回:

    • {any}
  • 详情:

    编译数据源值,将数据源引用替换为实际值。

  • 示例:

const compiled = devtoolApi.compileDataSourceValue('用户名:${ds_1.user.name}');

updateCode

  • 参数:

    • {Id} codeId 代码块 ID
    • {any} value 新值
    • {string} path 路径(必填)
  • 返回:

    • {void}
  • 详情:

    path 更新指定代码块的内容。当 path === 'content'value 为字符串时,当前实现会通过 eval 拼接执行后将函数写回。

    ::: warning 已知限制 当前 eval 模板存在多余的右括号(详见 packages/core/src/DevtoolApi.tsupdateCode对大部分常规函数字面量会因语法错误抛出。直接传入纯函数体或可被裸赋值的合法表达式时也需自行验证;如需稳定使用建议在调用方先编译为函数再写回 app.codeDsl[codeId].content,或等待该实现修复。 :::

  • 示例:

devtoolApi.updateCode('code_1', 'return data.value * 2;', 'content');