X

联系客服

公众号

下载源码

关注官方公众号
扫码联系客服

改一个部门名,几十张表单跟着变:低代码引擎的数据集与变量

时间:2026-10-12

平台上搭了几十张表单,几乎每张都带一个「部门」下拉,可这些下拉的选项是各配各的。等到行政那边说「部门改名了」,你就得一张张表单翻过去,逐个找出那个下拉来改;漏了哪张,哪张就还停在旧名字上,交上去的数据全是错的。

问题不在「改」这个动作,而在部门、岗位这类「主数据」从最开始就没有一个统一的来源。低代码引擎里的数据集和变量,正好用来解决这件事。

下拉选项为什么到处写死

部门、岗位、产品、供应商,这类基础字典有三个特点:到处被用、经常要改、来源却很集中。可落到实现上,它们反而成了最分散的——最早搭第一张表单图省事,选项直接写死最方便;搭第二张又顺手配了个接口;等搭到第十张,自己都不记得前面是怎么配的了。同一份「部门」,在系统里就有了好几种存在方式,谁也管不了谁。

更难受的是,改的时候没有规律可循,全凭记性;记不住,就得等用户报错来提醒你。

数据集:把主数据收进一个清单

数据集的思路其实很朴素:与其让每张表单自己存一份「部门」,不如先把「有哪些主数据」统一列成一个清单,表单里只记「我用了哪个」,具体数据是什么,表单根本不管。

落到操作上,是这么回事。业务侧先预置一份业务数据树——性别、部门、城市、商品列表,都在里面,每个数据项给它一个稳定的 key,比如部门就叫 dept。回到设计器里,你想给下拉加「部门」,数据来源不再选「写死」或者「配个接口」,而是选「业务数据」,再挑「部门」这一项。这么一来,表单规则里存下来的,只剩 { key: 'dept' } 这么一点标识,真正的取数动作,交给一个统一注册的加载函数。

选项数据来源选业务数据

业务数据清单里选部门

所属部门下拉加载出研发部等选项

这个加载函数长这样:

formCreate.setDataLoader((dataset) => {
    if (dataset.key === 'dept') {
        return fetch('/api/dept').then(r => r.json());
    }
    return [];
});

看出来没有,部门叫什么、接口地址是什么,全在这个函数里。以后部门改名了、接口迁移了,改的只是这一处;那几十张表单根本不用碰,因为它们里头压根没存部门数据,只存了「部门」这个引用。

变量:把上下文数据统一管起来

除了主数据,还有一类数据也到处被用——token、当前用户、商户信息这些「上下文」。它跟主数据不一样:主数据是「选项」,上下文是「我是谁、我在哪、我的凭证是什么」,几乎每个请求头、每个默认值都要用到。

老办法是每个要用到的地方各写一遍取值逻辑:这个组件里读一下 Cookie,那个页面里再读一次 localStorage,换个环境又得改。写多了,连哪次读的是哪个都容易搞混。

变量就是把这些上下文统一管起来。它可以从 Cookie、localStorage 里读,也可以从外面注入,还能用函数现算。你在表单里用 {{$cookie.token}}、{{$var.merchant}} 这种模板直接引用就行;值一旦变了,依赖它的组件自己会跟着更新,不用你再挨个去刷新。

全局配置里进入设置变量

定义当前商户、当前用户等全局变量

数据绑定里选用 $cookie 与 $var

两样配合,主数据就「一处改、处处变」

说到这儿,这两样东西的分工其实已经很清楚了:数据集回答「选项从哪来」,变量回答「上下文从哪来」。把它们合起来用,表单里的数据来源就收口了,只剩三条路:

  • 下拉选项走数据集,规则里只存一个 key;
  • token、用户、商户走变量,模板统一引用;
  • 不管哪边变了,改加载函数或变量定义一处,全平台的表单一起生效。

拿一个具体场景来想象一下。某个平台把「部门」「产品」预置成数据集,把「当前用户」「商户」定义成变量,几十张表单的下拉和默认值全都从这里取。后来业务说要新增一个部门,或者调整一下商品列表,你只需要改一处,所有表单跟着变,再不用操心哪张漏改。

想用起来,先想清楚三件事

这件事上手不复杂,真正要花点心思的,是一开始把数据来源理清楚。理清楚了,后面就是水到渠成:

第一步,把主数据整理成业务数据清单(config.datasets),给每个数据项一个稳定的 key——这一步是打底,key 起得随意,后面就难收拾。

第二步,在真正渲染用的 formCreate 实例上注册 setDataLoader,按 key 返回对应的数据,别注册错了层。

第三步,把 token、用户这类上下文定义成变量,组件里用模板变量去引用,别再各写各的取值逻辑。

想了解更完整的配置和 API,可以看 FcDesigner 的文档;动态渲染这一步由 FormCreate 完成;更进阶的用法在 FcDesigner Pro 文档 里都有。

入门示例:所属部门怎么接到数据集

背景:员工信息表的「所属部门」不再手写选项,改成引用业务数据 dept;申请人默认值走全局变量。

步骤(设计器里):

  1. 拖入「所属部门」选择器,在 选项数据 里选 业务数据。
  2. 在业务数据树展开 选项类,选 部门;画布下拉应出现研发部、市场部、财务部等。
  3. 打开左侧 全局配置 → 设置变量,按需增加「当前商户」「当前用户」。
  4. 选中要用上下文的字段,点 数据绑定,在变量列表里选用 $cookie / $var 下的项。

预期:部门改名只需改加载函数(或主数据源),引用同一 dept 的表单一起变;token、商户用变量统一引用。

常见问题

问:数据集的 key 是随便起的吗? 不建议。最好用 dept、product 这种稳定编码,因为它要长期作为加载函数的查找键存在;哪天你改了 key,引用它的那些表单也得跟着改一遍,得不偿失。

问:数据集跟「每张表单各配一个接口」比,好在哪? 取数逻辑收口到一处加载函数,主数据变动只改这里,不用逐张表单翻;表单里只存一个 key,配置也更干净,一眼就知道它依赖的是什么。

问:变量具体能做什么用? token、当前用户、商户信息这些上下文,定义成变量后用模板统一引用;值变了依赖组件会自动更新,最常见的三个用途是请求头、默认值和字段联动。