当前上下文中的 FlowResource 实例,用于访问和操作数据。多数区块(表单、表格、详情等)和弹窗场景下,运行环境会预先绑定 ctx.resource;JSBlock 等默认无 resource 的场景,需先调用 ctx.initResource() 初始化,再通过 ctx.resource 使用。
凡 RunJS 中需要访问结构化数据(列表、单条、自定义 API、SQL)的场景均可使用。表单、表格、详情区块及弹窗通常已预绑定;JSBlock、JSField、JSItem、JSColumn 等若需加载数据,可先 ctx.initResource(type) 再访问 ctx.resource。
ctx.resource 为对应 resource 实例;undefined,需先 ctx.initResource(type) 后才有值。不同 resource 类型(MultiRecordResource、SingleRecordResource、APIResource、SQLResource)暴露的方法略有差异,以下为通用或常用方法:
| 方法 | 说明 |
|---|---|
getData() | 获取当前数据(列表或单条) |
setData(value) | 设置本地数据 |
refresh() | 按当前参数发起请求,刷新数据 |
setResourceName(name) | 设置资源名(如 'users'、'users.tags') |
setFilterByTk(tk) | 设置主键筛选(单条 get 等) |
runAction(actionName, options) | 调用任意资源 action(如 create、update) |
on(event, callback) / off(event, callback) | 订阅/取消订阅事件(如 refresh、saved) |
MultiRecordResource 特有:getSelectedRows()、destroySelectedRows()、setPage()、next()、previous() 等。
ctx.resource 不存在则创建并绑定;已存在则直接返回。保证 ctx.resource 可用。ctx.resource。适合需要多个独立 resource 或临时使用的场景。undefined,需先 ctx.initResource。ctx.resource?.refresh(),尤其在 JSBlock 等可能无预绑定的场景。setResourceName(name) 指定数据表,再通过 refresh() 加载数据。ctx.resource