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 Pagectx.importAsync()
Next Pagectx.libs

#ctx.initResource()

初始化当前上下文的 resource:若尚未存在 ctx.resource,则按指定类型创建一个并绑定到上下文;若已存在则直接使用。之后可通过 ctx.resource 访问。

#适用场景

一般只在 JSBlock(独立区块)场景使用。多数区块、弹窗等会预先绑定 ctx.resource,无需手动调用;JSBlock 默认无 resource,需先 ctx.initResource(type) 再通过 ctx.resource 加载数据。

#类型定义

initResource(
  type: 'APIResource' | 'SingleRecordResource' | 'MultiRecordResource' | 'SQLResource'
): FlowResource;
参数类型说明
typestring资源类型:'APIResource'、'SingleRecordResource'、'MultiRecordResource'、'SQLResource'

返回值:当前上下文中的 resource 实例(即 ctx.resource)。

#与 ctx.makeResource() 的区别

方法行为
ctx.initResource(type)若 ctx.resource 不存在则创建并绑定;已存在则直接返回。保证 ctx.resource 可用
ctx.makeResource(type)仅创建新实例并返回,不写入 ctx.resource。适合需要多个独立 resource 或临时使用的场景

#示例

#列表数据(MultiRecordResource)

ctx.initResource('MultiRecordResource');
ctx.resource.setResourceName('users');
await ctx.resource.refresh();
const rows = ctx.resource.getData();
ctx.render(<pre>{JSON.stringify(rows, null, 2)}</pre>);

#单条记录(SingleRecordResource)

ctx.initResource('SingleRecordResource');
ctx.resource.setResourceName('users');
ctx.resource.setFilterByTk(1); // 指定主键
await ctx.resource.refresh();
const record = ctx.resource.getData();

#指定数据源

ctx.initResource('MultiRecordResource');
ctx.resource.setDataSourceKey('main');
ctx.resource.setResourceName('orders');
await ctx.resource.refresh();

#注意事项

  • 多数区块(表单、表格、详情等)和弹窗场景下,ctx.resource 已由运行环境预绑定,无需调用 ctx.initResource。
  • 仅在 JSBlock 等默认无 resource 的上下文中需要手动初始化。
  • 初始化后需调用 setResourceName(name) 指定数据表,再通过 refresh() 加载数据。

#相关

  • ctx.resource:当前上下文中的 resource 实例
  • ctx.makeResource():新建 resource 实例,不绑定到 ctx.resource
  • MultiRecordResource — 多条记录/列表
  • SingleRecordResource — 单条记录
  • APIResource — 通用 API 资源
  • SQLResource — SQL 查询资源