条件渲染异常:变量为0或1时始终显示相同消息
问题分析与解决方案
核心原因
你遇到的问题源于模板引擎对「真假值」的判定规则和预期不符:
- 多数模板引擎(如Mustache、Handlebars)会将数字0直接判定为假值
- 若数据库返回的是字符串类型的
"0"或"1",字符串"0"会被视为真值(非空字符串均为真),反而导致逻辑反转 - 另外,若后端传递的
genehmigt值未正确转换类型(比如实际是字符串而非数字),也会触发错误分支
可行解决方案
1. 显式值判断(推荐)
直接在模板中判断genehmigt是否等于1,绕过引擎的真假判定逻辑:
{{#schuelerdaten}} {{#if (eq genehmigt 1)}} Ist genehmigt {{else}} Ist nicht genehmigt {{/if}} {{/schuelerdaten}}
注:若使用Mustache,需自定义eq辅助函数;Handlebars则需先注册该辅助函数,或根据引擎语法调整判断方式。
2. 后端转换为布尔值
在将schuelerdaten传递给模板前,把genehmigt转为布尔类型:
示例(JavaScript):
schuelerdaten.genehmigt = schuelerdaten.genehmigt === 1;
转换后,模板中原有的写法即可正常工作:
{{#schuelerdaten}} {{#genehmigt}}Ist genehmigt{{/genehmigt}} {{^genehmigt}}Ist nicht genehmigt{{/genehmigt}} {{/schuelerdaten}}
3. 针对字符串类型的判断
如果数据库返回的是字符串"0"/"1",直接判断字符串值:
{{#schuelerdaten}} {{#if (eq genehmigt "1")}} Ist genehmigt {{else}} Ist nicht genehmigt {{/if}} {{/schuelerdaten}}
排查步骤
先确认后端传递的genehmigt实际值与类型:
- 打印输出
schuelerdaten.genehmigt,查看是数字、字符串还是其他类型 - 确保值确实是
0或1,而非null/undefined等其他值
内容的提问来源于stack exchange,提问作者Sascha
相关产品推荐
相关产品推荐

