如何使用Handlebars编写单行If语句?语法错误求助
解决Handlebars条件类名的语法问题
嘿,我来帮你搞定这个Handlebars的语法错误!你的需求是当user变量存在时,给<li>添加hidden类,但原代码的写法不符合Handlebars的语法规则,所以才会报错。
原代码的问题
你写的{{# if undefined !== user}}有两个明显问题:
{{#if}}是一个完整的Handlebars helper,中间不能加空格,应该是{{#if连在一起;- Handlebars的
{{#if}}不支持直接写undefined !== user这种原生JS比较表达式,它有自己内置的真值判断逻辑,或者需要用专用的比较helper。
正确的写法
根据你的需求,最简洁且符合规范的写法是利用Handlebars内置的真值判断:
<li class="nav-item {{#if user}} hidden {{/if}}">
Handlebars里的{{#if user}}会自动判断user是否为「真值」——也就是当user不是undefined、null、空字符串、0这些假值的时候,就会渲染里面的hidden类名,完全匹配你“user存在时添加hidden类”的需求。
如果你需要更严格的判断(比如只排除undefined,允许其他假值如0或空对象),可以使用Handlebars的ne(不等于)helper(需要Handlebars 4.0+版本支持):
<li class="nav-item {{#if (ne user undefined)}} hidden {{/if}}">
不过这种场景下,第一种写法已经足够满足大部分需求啦。
内容的提问来源于stack exchange,提问作者n1md7
相关产品推荐
相关产品推荐

