You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Postmark模板中Mustachio作用域内添加条件语句的实现方法

解决Postmark模板中Mustachio作用域访问问题

针对你遇到的语言标签内无法访问根层级变量的问题,提供以下几种可行方案:

方案1:使用@root直接访问根变量

多数现代Mustache衍生实现(包括Postmark的Mustachio)支持@root语法直接调用根层级的变量,无需修改现有数据结构。调整模板如下:

{{french}}Bonjour {{^@root.isToday}}demain{{/@root.isToday}}{{/french}}
{{english}}Hello {{^@root.isToday}}tomorrow{{/@root.isToday}}{{/english}}

这样在french/english的section内部,通过@root.isToday就能直接访问到根对象中的isToday字段。

方案2:调整数据结构,重构语言字段

将原布尔值类型的语言字段改为嵌套对象,让../能正确向上遍历作用域:

修改后的数据模型

{
  "lang": {
    "french": true
  },
  "isToday": true
}

调整后的模板

{{#lang.french}}Bonjour {{^../isToday}}demain{{/isToday}}{{/lang.french}}
{{#lang.english}}Hello {{^../isToday}}tomorrow{{/isToday}}{{/lang.english}}

此时../isToday会指向lang对象的父级(即根对象)中的isToday字段,作用域访问正常。

方案3:改用单一语言标识字段

放弃多布尔值的语言标记方式,改用单一字符串字段指定当前语言,彻底避免作用域问题:

修改后的数据模型

{
  "language": "french",
  "isToday": true
}

调整后的模板

{{#eq language "french"}}Bonjour {{^isToday}}demain{{/isToday}}{{/eq}}
{{#eq language "english"}}Hello {{^isToday}}tomorrow{{/isToday}}{{/eq}}

注意:此方案依赖Postmark模板支持eq比较助手(Postmark默认支持这类常用助手),所有变量都处于同一作用域,不会出现访问问题。


内容的提问来源于stack exchange,提问作者user14591246

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 01:53:22