从当前运行时上下文中异步读取变量值。变量来源与 SQL、模板中的 {{ctx.xxx}} 解析一致,通常来自当前用户、当前记录、视图参数、弹窗上下文等。
| 场景 | 说明 |
|---|---|
| JSBlock / JSField | 获取当前记录、用户、资源等信息用于渲染或逻辑判断 |
| 联动规则 / 事件流 | 读取 ctx.record、ctx.formValues 等做条件判断 |
| 公式 / 模板 | 与 {{ctx.xxx}} 使用相同的变量解析规则 |
| 参数 | 类型 | 说明 |
|---|---|---|
path | string | 变量路径,必须以 ctx. 开头,支持点访问与数组下标 |
返回值:Promise<any>,需使用 await 获取解析后的值;变量不存在时返回 undefined。
若传入不以
ctx.开头的路径,会抛出错误:ctx.getVar(path) expects an expression starting with "ctx.", got: "..."。
| 路径 | 说明 |
|---|---|
ctx.record | 当前记录(表单/详情绑定记录时可用) |
ctx.record.id | 当前记录主键 |
ctx.formValues | 当前表单值(联动规则、事件流中常用;表单场景下优先用 ctx.form.getFieldsValue() 实时读取) |
ctx.user | 当前登录用户 |
ctx.user.id | 当前用户 ID |
ctx.user.nickname | 当前用户昵称 |
ctx.user.roles.name | 当前用户角色名(数组) |
ctx.popup.record | 弹窗内记录 |
ctx.popup.record.id | 弹窗内记录主键 |
ctx.urlSearchParams | URL 查询参数(从 ?key=value 解析而来) |
ctx.token | 当前 API Token |
ctx.role | 当前角色 |
获取当前上下文中可解析变量的结构信息(类型、标题、子属性等),便于探索可用路径。返回值为基于 meta 的静态描述,不包含实际运行值。
返回值中每个 key 为变量路径,value 为该路径对应的结构信息(含 type、title、properties 等)。
| 参数 | 类型 | 说明 |
|---|---|---|
path | string | string[] | 剪裁路径,仅收集该路径下的变量结构。支持 'record'、'record.id'、'ctx.record'、'{{ ctx.record }}';数组表示多个路径合并 |
maxDepth | number | 最大展开层级,默认 3。不传 path 时顶层属性 depth=1;传 path 时 path 对应节点 depth=1 |
| 方法 | 适用场景 | 说明 |
|---|---|---|
ctx.getValue() | JSField、JSItem 等可编辑字段 | 同步获取当前字段的值,需表单绑定 |
ctx.getVar(path) | 任意 RunJS 上下文 | 异步获取任意 ctx 变量,path 需以 ctx. 开头 |
在 JSField 中读写本字段用 getValue/setValue;访问其他上下文变量(如 record、user、formValues)用 getVar。
ctx. 开头:如 ctx.record.id,否则抛出错误。await 获取结果,如 const id = await ctx.getVar('ctx.record.id')。undefined,可在结果后使用 ?? 设置默认值:(await ctx.getVar('ctx.user.nickname')) ?? '访客'。ctx.formValues 需通过 await ctx.getVar('ctx.formValues') 获取,不直接暴露为 ctx.formValues。在表单上下文中优先用 ctx.form.getFieldsValue() 实时读取最新值。ctx.form.getFieldsValue() 可实时读取表单值{{ctx.xxx}} - 与 ctx.getVar('ctx.xxx') 使用相同解析规则