Handlebars 如何在#if条件判断中使用嵌套路径
Handlebars 原生的 #if 条件判断完全支持嵌套路径查询,你尝试的第一种写法 {{#if person.showName}} 本身就是符合语法规范的正确写法,无法进入分支大概率是其他问题导致的。
常见问题排查方向
- 首先确认传入的上下文数据结构是否正确:你给出的示例数据存在语法错误,
person后缺少冒号,正确的结构应为:
{ person: { firstName: 'Uncle', lastName: 'Bob', showName: true } }
如果实际传入的根上下文里没有正确挂载 person 对象,自然无法读取到对应属性。
- 可以先在模板中加入调试输出语句
{{person.showName}},直接查看属性是否能正常读取:如果输出为空/undefined,说明person不在当前模板的上下文中;如果当前#if是写在#each循环、子 partial 等非根上下文里,需要用../回退到父级上下文访问,写法为{{#if ../person.showName}}。
可运行的验证示例
模板代码:
{{#if person.showName}} <p>显示名称:{{person.firstName}} {{person.lastName}}</p> {{else}} <p>不显示名称</p> {{/if}}
传入上述正确结构的数据后,模板会正常输出「显示名称:Uncle Bob」,不需要使用 #with 语法,也不需要把字段扁平化到根对象。
如果以上排查都没有问题,可以确认下你使用的 Handlebars 版本,2.x 及以上的稳定版本都支持点语法的嵌套路径访问,属于非常基础的特性。
内容的提问来源于stack exchange,提问作者Adam Gritt
相关产品推荐
相关产品推荐

