ToolJet 应用构建器值访问与引用指南:使用 `{{}}` 表达式、Inspector 与全局变量

发布时间:2026/9/12 5:49:55

ToolJet 应用构建器值访问与引用指南:使用 `{{}}` 表达式、Inspector 与全局变量 ToolJet 应用构建器值访问与引用指南使用{{}}表达式、Inspector 与全局变量【免费下载链接】ToolJetOpen-source foundation of ToolJet AI - the enterprise app generation platform for internal tools, dashboards, business applications, workflows and AI agents. Build visually, from a prompt, or from Claude Code, Codex and Cursor over MCP 项目地址: https://gitcode.com/GitHub_Trending/to/ToolJet本篇技术指南讲解 ToolJet 应用构建器中如何通过双花括号{{}}表达式访问与引用动态数据——包括查询queries返回的数据、组件components属性、全局变量globals、用户变量variables与页面变量page variables。你将掌握 Inspector 面板的完整用法、各命名空间的实际取值语法以及如何用自定义 JavaScript 代码让组件属性动态化为构建内部工具、数据看板与业务应用打下数据绑定基础。为什么需要值访问动态数据接入的基础ToolJet 应用中的数据绑定能力源自一套统一的值访问机制双花括号{{}}表达式。在应用构建器中你可以在组件属性、查询参数、事件配置等任何可输入的位置写入{{...}}ToolJet 会将其解析为 JavaScript 表达式并实时求值。这使应用能够把查询结果、用户操作、页面状态等运行时数据无缝注入到界面与逻辑中实现无代码/低代码外壳下的完整动态能力。围绕这套机制ToolJet 提供了四大取值来源queries访问查询执行后返回的数据components访问画布上组件的值与其他组件相关变量globals访问环境预置的全局设置与变量主题、当前用户、URL 参数等variables / page访问用户自定义的全局变量与页面级变量。这些可访问值的完整清单都可以通过左侧边栏的Inspector标签页实时查看。使用 Inspector 查看所有可访问值Inspector 是应用构建器中最常用的调试与数据探查工具位于左侧边栏。它可以直观地展示查询与组件返回的数据并支持在查询、组件中引用这些值。从源码实现看Inspector 面板的数据来自构建器全局状态仓库的getAllExposedValues()分别聚合了components、queries、variables、constants、page、globals六个命名空间并按树形结构渲染见 LeftSidebarInspector.jsx。Inspector 的六大分区根据 use-inspector 指南Inspector 面板包含 6 个主要分区分区内容说明Queries查询的详细信息只有查询被执行/触发后其数据才会出现在此处Components画布上各组件的属性与值用于分析每个组件在应用内的运行状态Globals与应用相关的全局信息当前用户、用户组、主题、URL 参数、环境、模式等Variables用户自定义变量键值对通过事件处理器或 Run JavaScript 代码设置全应用可访问Page页面级属性页面名称、handle 与页面变量仅限所在页面访问Constants预定义的常量值通常存放 token、密钥、API Key 等固定值便于统一维护Inspector 还支持在面板内搜索可快速定位queries、components、globals、variables、page、constants等路径下的任意字段。Globals 全局变量明细Globals 分区提供以下预置数据详见 use-inspector.mdcurrentUser当前登录用户信息如email、firstName、lastNamegroups当前用户所属的用户组名称列表all_users是所有人的默认组theme当前正在使用的主题名称urlparams应用 URL 参数解析结果。在 appSlice.js 中可以看到urlparams由 URL 查询字符串经queryString.parse解析后写入全局状态environment包含id自动生成的唯一标识与name当前应用版本的环境名modes应用当前所处的模式——edit编辑、preview构建器中点击预览、view通过分享链接打开。说明environment与modes两个变量在 ToolJet 企业版 v2.2.3 及以上版本才可用而currentUser、groups、theme等其余全局变量在所有 ToolJet 应用中均可随处访问。核心取值语法queries、components、globals在 Inspector 中确认了可用值之后即可在任意属性或代码输入处用{{}}引用它们。以下是三种最常见的取值场景。场景一读取查询数据目的取回查询返回的业务数据。实现使用表达式{{queries.getSalesData.data}}获取名为getSalesData的查询返回的数据。该语法在查询管理中同样适用——例如在 using-code.md 的示例中可以在 Run JavaScript 代码查询里先用await queries.restapi1.run()执行查询再通过queries.restapi1.getData()读取结果并做二次加工。场景二读取组件值目的获取组件上的用户交互状态或选中数据。实现使用表达式{{components.table1.selectedRow.id}}获取表格table1当前选中行的id字段。组件值读取是构建交互式界面的关键例如{{components.textinput1.value}}可获取文本输入框的当前内容{{components.checkbox1.value}}可获取复选框的勾选状态布尔值它们常被用于驱动其他组件的禁用、显隐与样式。场景三访问全局变量目的读取 ToolJet 环境预置的全局设置并据此动态调整界面。实现使用{{globals.theme.name}}获取当前主题名进而动态适配组件样式。全局变量还可组合出更复杂的逻辑例如基于用户组控制可见性{{globals.currentUser.groups.includes(admin) ? true : false }}这段代码会让组件仅在管理员访问时可见非常适合按钮、操作入口等权限敏感型 UI 的按需渲染。用fx编写自定义代码让属性动态化除直接取值外{{}}内还可以编写任意 JavaScript 表达式。属性面板中每个属性旁的fx按钮可切换静态值/动态表达式模式是低代码场景下注入自定义逻辑的最常用入口。示例一按主题切换按钮背景色在 Button 组件的 Background Color 属性上使用 fx返回十六进制颜色字符串{{globals.theme.name light ? #375FCF : #FFFFFF}}示例二根据用户输入启用/禁用按钮在 Button 组件的 Disable 属性上使用 fx返回布尔值{{components.form1.data.textinput1 ? true : false}}当表单内文本输入为空时按钮禁用有输入时恢复可用。示例三按输入值控制禁用状态Number Input{{components.numberinput1.value ? false : true}} // 将 numberinput1 替换为你实际的组件名当数字输入框没有值时按钮处于禁用状态。示例四文本匹配动态改色{{components.textinput1.value available ? #375FCF : #FF0000}} // 将 textinput1 替换为你实际的组件名示例五复选框控制图片显隐在 Image 组件的 Visibility 属性上使用 fx{{components.checkbox1.value ? true : false}} // 将 checkbox1 替换为你实际的组件名表格单元格转换在 Table 组件的属性面板中进入某列设置其Transformations默认值为{{cellValue}}可编写代码动态改写单元格值例如四舍五入{{cellValue 4.5 ? 5 : 4}}日期默认值使用 Moment.js在 Datepicker 组件的 Default value 属性中输入{{moment().format(DD/MM/YYYY);}}即可将今天日期以DD/MM/YYYY格式设为默认值。ToolJet 内置了 moment 等常用工具库可在表达式中直接使用。变量与页面变量跨页面管理动态状态当需要跨页面或跨组件共享状态时应使用variables应用级变量与page variables页面级变量。设置方式有两种详见 variables.md通过事件在事件处理器中选择Set variable动作并在 Action Options 中定义 Key 与 Value页面变量则使用Set page variable动作。通过 Run JavaScript code 查询调用setVariable(key, value)设置应用级变量调用setPageVariable(key, value)设置页面级变量。实战统计用户访问页面次数创建名为countVisits的 Run JavaScript code 查询function incrementPageVisit() { if (!page.variables.visitCount) { actions.setPageVariable(visitCount, 1); } else { actions.setPageVariable(visitCount, Number(page.variables.visitCount) 1); } } incrementPageVisit();随后新建页面如Product Listing为该页面添加事件处理器事件选On page load动作选Run Query查询选择countVisits。此后用户每次进入该页面visitCount都会自动 1。注意这里通过page.variables.visitCount访问页面变量体现出page命名空间与variables命名空间应用级的作用域差异。实战避免表格加载闪烁创建getData与updateData两个查询将表格数据放入变量loadedData给getData添加Query Success事件动作选setVariableKey 设为loadedDataValue 设为返回数据queries.getData.data在 Table 组件的Data属性中输入{{variables.loadedData}}给updateData添加两个Query Success事件第一个运行getData查询第二个用getData返回的数据更新loadedData变量。这样表格始终渲染loadedData中的数据数据刷新期间不会出现加载指示器交互体验更平滑。左侧边栏页面、调试器与全局设置除了 Inspector应用构建器左侧边栏还是应用导航与配置的中枢包含以下关键选项Pages页面在一个应用内管理多个页面增强组织结构与用户导航体验Inspector检查器检查查询与组件关联的数据是调试与数据操作的核心工具Debugger调试器跟踪并展示查询执行期间的错误为排查应用问题提供线索Global Settings全局设置配置应用级设置如应用 slug、页头可见性、维护模式等。实用建议在编写任何{{}}表达式前先打开 Inspector 确认字段名与数据结构能显著减少拼写错误与数据流问题善用 Debugger 观察查询执行错误保持应用运行顺畅、快速定位问题通过 Global Settings 按组织或用户需求调整应用行为需要全局共享的状态优先使用variables仅在单页内使用的状态用page.variables作用域清晰、便于维护涉及密钥、token 等固定值优先放入 Constants 统一管理避免散落在各表达式中。进一步阅读Inspector 完整使用指南值访问概念详解变量与页面变量管理自定义代码使用示例查询创建指南【免费下载链接】ToolJetOpen-source foundation of ToolJet AI - the enterprise app generation platform for internal tools, dashboards, business applications, workflows and AI agents. Build visually, from a prompt, or from Claude Code, Codex and Cursor over MCP 项目地址: https://gitcode.com/GitHub_Trending/to/ToolJet创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/9/12 5:49:54

ECharts交互式数据可视化开发与优化实战

1. ECharts 交互式数据可视化实战指南第一次接触ECharts是在2015年的一个企业级数据监控项目,当时客户需要实时展示服务器集群的运行状态。当我用十几行代码实现动态刷新的折线图时,整个会议室都沸腾了——这就是数据可视化的魔力。如今ECharts已成为国内…

2026/9/12 5:44:54

Sunshine 自托管游戏串流 30 分钟跑通:从安装到第一帧画面

Sunshine 自托管游戏串流 30 分钟跑通:从安装到第一帧画面 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine Sunshine 是开源免费、自托管的 Moonlight 串流主机&#xf…

2026/9/12 5:44:54

Flutter在OpenHarmony中的图片保存方案与实践

1. 项目概述:Flutter for OpenHarmony中的图片保存方案 在Flutter跨平台开发框架中,图片保存是一个高频需求场景。当我们将Flutter应用移植到OpenHarmony操作系统时,传统的Dart IO库在文件系统操作上会遇到兼容性问题。image_gallery_saver作…

2026/9/12 6:19:58

坭兴陶水杯工艺解析与选购指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/12 6:19:58

阿里云OSS命令行工具使用指南与实战技巧

1. OSS命令行工具入门指南阿里云OSS(Object Storage Service)作为国内主流云存储服务,其命令行工具是开发者日常管理文件的利器。相比图形界面,命令行工具在批量操作、自动化脚本和服务器环境中展现出明显优势。我最初接触OSS命令…

2026/9/12 6:19:58

HTML零基础入门与蓝桥杯Web开发备赛指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/12 6:19:58

过滤器思维:从代码filter到布隆过滤器与Wireshark的跨领域应用

今天想认真聊一聊 Filter(过滤器)。这个词在编程、网络调试、音视频处理、工业设备选型里都会出现,但绝大多数人对它的理解都停留在"过滤一下"这种直觉层面。写代码的人提到 filter 就想到数组挑数据,网络工程师想到 Wi…

2026/9/12 6:19:57

语音指令分类模型训练与优化实践

1. 语音指令分类模型训练概述语音指令分类是当前人机交互领域的关键技术,它能将用户的语音输入转化为机器可理解的指令类别。我在智能家居和车载系统项目中多次应用这项技术,发现一个高效的分类模型能显著提升用户体验。基于机器学习的语音指令分类&…

2026/9/12 6:14:57

微信文件过期恢复与预防全攻略

1. 微信文件过期问题的痛点解析作为每天都要处理大量微信文件的打工人,最崩溃的瞬间莫过于看到那个灰色提示框:"文件已过期或已被清理"。上周我就差点因为这个丢了重要合同——客户发来的报价单突然打不开,而deadline就在两小时后。…

2026/9/12 2:05:33

超人会飞不算本事:系统稳定依赖清晰规则与边界设计

开头先不绕弯子。“#斯坦李吐槽dc 所以超人是无缘无故会飞的嘛哈哈哈哈哈哈哈锤哥真是技术人才啊!#雷神 #复联”这类调侃式短标题,第一波冲击力在于它把两个宇宙的角色塞进同一个吐槽箱里,但细想一下就能发现,它真正碰到的根本不是…

2026/9/12 3:55:12

超人VS蜘蛛侠:拆解超级IP的影响力与传播方法论

把“蜘蛛侠 vs 超人”放在 CSDN 上聊,可能很多人第一反应是走错片场了。但如果把这两个角色看成“两个持续运营了 80 多年的文化产品”,你会发现,这场比较本质上是两个不同 IP 策略的长期结果对比:超人赢在定义了整个超级英雄题材…

2026/9/9 16:31:09

基于CNN的调制信号识别:MATLAB实现时频图分类实战

简介:本资源是一套面向通信工程与信号处理方向学习者、研究者的深度学习实践方案,聚焦调制信号自动检测与识别这一典型无线通信任务,解决传统方法依赖人工特征、低信噪比下性能下降等痛点。压缩包共12个文件(10.73MB)&…

2026/9/12 0:04:17

MATLAB仿生优化框架:长鼻浣熊算法多策略融合实现

简介:本资源是一份面向智能优化算法研究者与MATLAB初学者的仿生智能算法实践代码包,聚焦于长鼻浣熊优化算法(COA)的多策略改进与性能验证。针对传统COA易陷局部最优、收敛精度不足等问题,作者融合Circle映射初始化提升…

2026/9/12 0:04:17

【JAVA毕设源码分享】基于 JavaWeb 的校园一卡通管理系统的设计与实现 基于 JavaWeb 的校园卡业务管理系统(程序+文档+代码讲解+一条龙定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/9/12 0:04:17

【JAVA毕设源码分享】基于 Java 的图书馆借阅管理平台的搭建与实现 基于 Java 的图书馆综合管理系统(程序+文档+代码讲解+一条龙定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/9/10 12:32:02

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/10 15:19:50

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/10 15:49:53

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码