ctx.getVar()
从当前运行时上下文中异步读取变量值。变量来源与 SQL、模板中的 {{ctx.xxx}} 解析一致,通常来自当前用户、当前记录、视图参数、弹窗上下文等。
适用场景
类型定义
返回值:Promise<any>,需使用 await 获取解析后的值;变量不存在时返回 undefined。
若传入不以
ctx.开头的路径,会抛出错误:ctx.getVar(path) expects an expression starting with "ctx.", got: "..."。
常用变量路径
ctx.getVarInfos()
获取当前上下文中可解析变量的结构信息(类型、标题、子属性等),便于探索可用路径。返回值为基于 meta 的静态描述,不包含实际运行值。
类型定义
返回值中每个 key 为变量路径,value 为该路径对应的结构信息(含 type、title、properties 等)。
参数
示例
与 ctx.getValue 的区别
在 JSField 中读写本字段用 getValue/setValue;访问其他上下文变量(如 record、user、formValues)用 getVar。
注意事项
- path 必须以
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()实时读取最新值。
示例
获取当前记录 ID
获取弹窗内记录
读取数组字段子项
设置默认值
读取表单字段值
读取 URL 查询参数
探索可用变量
相关
- ctx.getValue() - 同步获取当前字段值(仅 JSField/JSItem 等)
- ctx.form - 表单实例,
ctx.form.getFieldsValue()可实时读取表单值 - ctx.model - 当前执行上下文所在模型
- ctx.blockModel - 当前 JS 所在的父区块
- ctx.resource - 当前上下文中的 resource 实例
- SQL / 模板中的
{{ctx.xxx}}- 与ctx.getVar('ctx.xxx')使用相同解析规则

