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

SendGrid动态模板中如何基于字符串包含关系动态显示复选框?

SendGrid动态模板中如何基于字符串包含关系动态显示复选框?

我完全明白你遇到的问题了——想用SendGrid动态模板根据逗号分隔的字符串内容,自动显示对应选中/未选中的禁用复选框,但试了LIKE不管用,又找不到合适的contains函数,确实头疼!

首先得说清楚:SendGrid的动态模板用的是Handlebars语法,不支持SQL里的LIKE写法,所以你之前的条件判断逻辑才会出现“一直返回true或false”的问题。不过我们可以用Handlebars支持的原生字符串/数组方法来解决,给你两个靠谱的方案:

方案一:用indexOf判断字符串包含关系

这是最稳妥的方法,几乎所有版本的SendGrid模板都支持字符串的indexOf方法。这个方法会返回子串在原字符串中的起始位置,如果找不到就返回-1,我们结合Handlebars的ne(不等于)辅助函数就能判断是否包含目标子串。

比如判断b是否在InputVar中的代码:

{{#if (ne (indexOf InputVar 'b') -1)}}
  <input type="checkbox" disabled checked>
{{else}}
  <input type="checkbox" disabled>
{{/if}}

同理,判断a就把'b'换成'a',判断c换成'c'就行。

原理很简单:如果indexOf返回的结果不是-1,就说明原字符串里包含这个子串,我们就渲染选中的禁用复选框;反之就渲染未选中的。

方案二:转成数组后用includes判断(更严谨)

如果担心出现类似"ab,c"这种场景(比如你要判断的是a,但原字符串里的ab会被indexOf误判),可以先把逗号分隔的字符串转成数组,再用includes方法判断是否包含目标元素,这样结果更准确。

代码示例:

{{#if (includes (split InputVar ',') 'b')}}
  <input type="checkbox" disabled checked>
{{else}}
  <input type="checkbox" disabled>
{{/if}}

这里split InputVar ','会把"a,c"转成数组['a','c'],然后includes方法会直接判断目标元素'b'是否在这个数组里,完全不会有子串误判的问题。

小提醒

  • 如果你的输入字符串可能带有空格(比如"a, c"),那判断的时候要对应写' c',或者提前要求输入是无空格的逗号分隔格式,这样更省心。
  • 如果你要判断的是多字符的选项(比如"apple,banana"),优先用方案二,彻底避免indexOf的误判风险。

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.08 13:54:51