概述
NueForm 中的变量让您创建动态、个性化的表单体验。您可以在问题标题、描述、欢迎页面和感谢页面中使用 {variableName} 替换语法引用受访者答案、URL 参数和自定义表单变量。
变量类型
NueForm 支持三种类型的变量:
1. 答案变量
答案变量捕获受访者对特定问题的回答,并使其可在后续问题中使用。
如何设置:
- 在表单构建器中选择一个问题。
- 在问题设置中找到答案变量字段。
- 输入变量名称(例如
name、company、rating)。 - 该问题的受访者答案现在存储为
{name}、{company}或{rating}。
示例:
- 问题 1:"您的名字是什么?"(答案变量:
name) - 问题 2 标题:"很高兴认识您,{name}!今天是什么让您来到这里?"
当受访者在问题 1 中输入"Sarah"时,问题 2 将显示:"很高兴认识您,Sarah!今天是什么让您来到这里?"
值转换:
| 答案类型 | 存储为 |
|---|---|
| 文本(字符串) | 直接使用文本值 |
| 数字 | 数值转为字符串 |
| 布尔值(是/否) | "true" 或 "false" |
| 数组(多选) | 逗号分隔的值(例如 "选项 A, 选项 B") |
| 对象(联系信息、地址) | JSON 字符串 |
| Null/undefined | 空字符串 |
选择题答案
对于多选、下拉菜单或其他选择题,变量保存的是所选选项的标签,而不是选项的 ID(多个选项用逗号分隔,如上表所示)。在已翻译的表单中,无论是 NueForm 样式还是问卷样式,标签都使用受访者填写表单时所用的语言:如果问题提供的选项是 猫,而受访者用英语作答,变量保存的就是 Cat。因此,要在逻辑跳转或可见性条件中针对某个选项,请把条件设在问题本身上(哪种动物? 为 猫):它比较的是选项本身,与语言无关。将变量与某个标签进行比较的条件(animal 等于 猫)在受访者用其他语言作答时将不再匹配。对于从变量加载的列表,变量保存的是条目加载时的标签,不会被翻译。
2. URL 变量
URL 变量是通过 URL 查询参数传递给表单的值。它们在表单加载时立即可用,在任何问题被回答之前。
如何使用:
在表单 URL 后附加查询参数:
https://nueform.io/f/my-form?firstName=John&company=Acme&source=email
这些参数自动作为变量可用:
{firstName}解析为 "John"{company}解析为 "Acme"{source}解析为 "email"
用例:
- 使用已知数据预填表单字段。
- 个性化问候:"嗨 {firstName},我们有一些问题想问您。"
- 在回复数据中跟踪来源。
- 使用基于 URL 参数的起始逻辑跳转路由受访者。
URL 变量也可用于逻辑跳转条件。在条件字段中使用 url: 前缀引用变量名(例如 url:source)。URL 变量查找支持不区分大小写的回退,因此 ?FirstName=John 将匹配 url:firstname 上的条件。
3. 表单变量
表单变量是具有名称、类型和默认值的预定义变量。它们在表单级别定义,可以通过逻辑跳转中的变量操作进行修改。
如何定义:
表单变量在表单的变量定义中定义,具有以下属性:
| 属性 | 描述 |
|---|---|
| 名称 | 变量名称(例如 score、category、is_qualified)。 |
| 类型 | number 或 string。 |
| 默认值 | 表单加载时的初始值。 |
如何修改:
表单变量通过逻辑跳转上的变量操作修改。当逻辑跳转的条件匹配时,其关联的变量操作会执行:
| 操作 | 描述 | 示例 |
|---|---|---|
set | 替换变量的值。 | 将 category 设为 "premium" |
add | 向变量添加数值。 | 向 score 加 10 |
subtract | 从变量减去数值。 | 从 score 减 5 |
示例:构建分数计算器
- 定义表单变量:
score(类型:number,默认值:0)。 - 在每个问题上添加带有变量操作的逻辑跳转:
- 如果评分 >= 4,向
score加 10。 - 如果评分 >= 2,向
score加 5。
- 如果评分 >= 4,向
- 在感谢页面上:"您的分数是 {score}(满分 50)。"
替换语法
{variableName} 语法在以下位置有效:
| 位置 | 支持 |
|---|---|
| 问题标题 | 是 |
| 问题描述 | 是 |
| 欢迎页面标题 | 是 |
| 欢迎页面描述 | 是 |
| 感谢页面标题 | 是 |
| 感谢页面描述 | 是 |
| 表单标题 | 是 |
| 表单描述 | 是 |
| 选项标签 | 否 |
| 按钮文本 | 否 |
| 二维码 URL 模板 | 是 |
替换工作原理
- 系统扫描文本中的
{variableName}模式(单花括号内包含字符)。 - 在当前变量映射中查找变量名称。
- 如果找到,标记将被替换为变量的值。
- 如果未找到,标记将被替换为空字符串。
在 Markdown 或 合同 问题的内容(即 Markdown 正文或合同文档)中,变量值里的 HTML 标签(例如来自 URL 参数或 API 响应)不会被渲染,而是按原样显示:<b>Hi</b> 显示为 <b>Hi</b>,而不是粗体。值中的 Markdown(例如 **bold** 或 [a link](https://example.com))在这里仍会生效。例外是需要 <、> 或引号的语法,例如以 > 开头的引用块或带引号的链接标题:它们同样按原样显示。问题的标题和描述则不同:值中的一小部分格式标签(例如 <strong>、<em>、<u>、<s>、<a href> 和 <span style>)会被渲染,其他标签都会被移除(<b>Hi</b> 显示为不带格式的“Hi”),Markdown 也不会生效。
您自己在这些内容中输入的 HTML 同样受到限制:只保留问题标题允许的格式标签。请参阅 Markdown 中的 HTML。
变量名称使用单花括号 {name}。不要将其与 Markdown 内联字段语法混淆,后者使用双花括号 {{type:label}}。这两种语法是故意不同的,不会冲突。
变量检测
NueForm 通过扫描以下内容自动检测表单中引用的所有变量:
- 所有文本字段(标题、描述、欢迎/感谢页面)中的
{variableName}标记。 - 逻辑跳转条件中以
url:为前缀的字段。 - 逻辑跳转操作中的变量名称。
- 问题上的
answerVariable声明。 - 表单级别的变量定义。
这种全面扫描产生一个排序的、去重的所有变量名称列表。
变量解析顺序
解析 {variableName} 标记时,NueForm 按以下顺序检查变量:
- URL 变量 -- 通过表单 URL 传递。
- 答案变量 -- 由配置了
answerVariable的问题的受访者答案设置。 - 表单变量 -- 在表单级别定义并通过逻辑跳转操作修改。
如果相同的变量名称存在于多个来源中,URL 变量优先(因为它们是传递给替换函数的来源,与表单/答案变量合并在一起)。
将数据节点响应用作选项列表
数据节点会把其 API 响应保存到响应变量设置中指定的变量里。除了在文本中使用它,您还可以把它用作选择类问题的列表:将多选题、下拉菜单或排序题的选项来源(或矩阵题的行来源或列来源)设为来自变量,然后输入该变量:
- 当响应本身就是列表(例如
["Siamese", "Persian"])时,使用{breeds}。 - 当列表位于响应内部(例如
{"data": [...]})时,使用{breeds.data}。嵌套的键用点号访问;如果键不是一个简单的单词,请使用{breeds["the list"]}。
有关支持的格式以及标签字段和值字段的映射,请参阅选择题类型中的“来自变量的选项”一节。这些来源设置只对直接放在表单中的问题提供,不适用于问题组、多问题页面或复合组件中的问题。
数据节点只保留其响应的前 4,096 个字符。如果列表的 JSON 更长,到达时就会被截断,问题会显示“无法加载这些选项。”而不是选项。请让您的 API 返回更少的条目,或只返回您需要的字段。
示例
个性化欢迎
URL:https://nueform.io/f/feedback?name=Sarah&product=Widget
欢迎标题:"嗨 {name}!" 欢迎描述:"我们很想听听您对 {product} 的看法。"
结果:"嗨 Sarah!" / "我们很想听听您对 Widget 的看法。"
动态跟进问题
问题 1:"您的职位是什么?"(答案变量:role) 问题 2:"作为 {role},您面临的最大挑战是什么?"
计算分数显示
表单变量:score(number,默认值:0) 逻辑跳转操作:根据答案添加分数 感谢描述:"您获得了 {score} 分!感谢完成测验。"
使用 URL 变量进行条件路由
URL:https://nueform.io/f/survey?plan=enterprise
起始逻辑跳转:
- 条件:
url:planequals"enterprise" - 目标:跳转到企业版专属问题
- 操作:将
plan_name设为"Enterprise"
最佳实践
- 使用描述性名称:选择清晰表明存储内容的变量名称(例如用
customer_name而非n)。 - 设置默认值:对于表单变量,始终提供有意义的默认值,以防变量从未被修改。
- 使用 URL 参数测试:使用 URL 变量时,用各种参数组合测试表单以确保所有路径正常工作。
- 优雅处理缺失变量:如果 URL 变量可能未提供,请设计文本使其在变量解析为空字符串时仍然通顺。