logologo
开始
教程
手册
开发
插件
API
首页
English
简体中文
日本語
한국어
Español
Português
Deutsch
Français
Русский
开始
教程
手册
开发
插件
API
首页
logologo
RunJS 概述
导入模块
容器内渲染

全局变量

window
document
navigator

ctx

ctx.blockModel
ctx.collection
ctx.collectionField
ctx.dataSource
ctx.dataSourceManager
ctx.element
ctx.exit()
ctx.exitAll()
ctx.filterManager
ctx.form
ctx.getModel()
ctx.getValue()
ctx.getVar()
ctx.i18n
ctx.importAsync()
ctx.initResource()
ctx.libs
ctx.location
ctx.logger
ctx.makeResource()
ctx.message
ctx.modal
ctx.model
ctx.notification
ctx.off()
ctx.on()
ctx.openView()
ctx.render()
ctx.request()
ctx.requireAsync()
ctx.resource
ctx.route
ctx.router
ctx.setValue()
ctx.sql
ctx.t()
ctx.view
Previous Pagenavigator
Next Pagectx.collection

#ctx.blockModel

当前 JS 字段 / JS 区块所在的父区块模型(BlockModel 实例)。在 JSField、JSItem、JSColumn 等场景下,ctx.blockModel 指向承载当前 JS 逻辑的表单区块或表格区块;在 JSBlock 独立区块中可能为 null 或与 ctx.model 相同。

#适用场景

场景说明
JSField表单字段内访问父表单区块的 form、collection、resource,实现联动或校验
JSItem子表格项中访问父表格/表单区块的资源、数据表信息
JSColumn表格列中访问父表格区块的 resource(如 getSelectedRows)、collection
表单操作 / 事件流访问 form 做提交前校验、resource 做刷新等

注意:ctx.blockModel 仅在存在父区块的 RunJS 上下文中可用;独立 JSBlock(无父表单/表格)时可能为 null,使用前建议做空值判断。

#类型定义

blockModel: BlockModel | FormBlockModel | TableBlockModel | CollectionBlockModel | DataBlockModel | null;

具体类型取决于父区块类型:表单区块多为 FormBlockModel、EditFormModel,表格区块多为 TableBlockModel。

#常用属性

属性类型说明
uidstring区块模型唯一标识
collectionCollection当前区块绑定的数据表
resourceResource区块使用的资源实例(SingleRecordResource / MultiRecordResource 等)
formFormInstance表单区块:Ant Design Form 实例,支持 getFieldsValue、validateFields、setFieldsValue 等
emitterEventEmitter事件发射器,可监听 formValuesChange、onFieldReset 等

#与 ctx.model、ctx.form 的关系

需求推荐用法
当前 JS 所在的父区块ctx.blockModel
读写表单字段ctx.form(等价于 ctx.blockModel?.form,表单区块下更便捷)
当前执行上下文所在模型ctx.model(JSField 中为字段模型,JSBlock 中为区块模型)

在 JSField 中,ctx.model 为字段模型,ctx.blockModel 为承载该字段的表单/表格区块;ctx.form 通常即 ctx.blockModel.form。

#示例

#表格:获取选中行并处理

const rows = ctx.blockModel?.resource?.getSelectedRows?.() || [];
if (rows.length === 0) {
  ctx.message.warning('请先选择数据');
  return;
}

#表单场景:校验并刷新

if (ctx.blockModel?.form) {
  await ctx.blockModel.form.validateFields();
  await ctx.blockModel.resource?.refresh?.();
}

#监听表单变化

ctx.blockModel?.emitter?.on?.('formValuesChange', (payload) => {
  // 根据最新表单值做联动或重新渲染
});

#触发区块重新渲染

ctx.blockModel?.rerender?.();

#注意事项

  • ctx.blockModel 在独立 JSBlock(无父表单/表格区块)时可能为 null,访问其属性前建议使用可选链:ctx.blockModel?.resource?.refresh?.()。
  • 在JSField / JSItem / JSColumn 中,ctx.blockModel 为承载当前字段的表单或表格区块;在JSBlock 中,可能为自身或上层区块,取决于实际层级。
  • resource 仅在数据区块下存在;form 仅在表单区块下存在,表格区块通常无 form。

#相关

  • ctx.model:当前执行上下文所在模型
  • ctx.form:表单实例,表单区块下常用
  • ctx.resource:资源实例(等价于 ctx.blockModel?.resource,有则直接使用)
  • ctx.getModel():按 uid 获取其他区块模型