如何访问Handlebars模板中if语句内的数据

时间:2013-04-13 20:53:26

标签: javascript handlebars.js template-engine

对于把手(版本1.0.0-rc.3)模板,我传递了两个变量,一个是json,另一个是包含现场语言的字符串。

self.template = template({ data: self.model, lang:self.lang });

然后在模板文件中我有以下结构:

    {{#each data}} 
    //this is working
    {{../lang}}   
       {{#if this.title}}   
         {{this.desc}}
         //i've tried this
         {{../lang}}
         //and this
         {{lang}}
       {{/if}}  
    {{/each}}   

...但我无法访问if语句中的lang值。我做错了什么?

2 个答案:

答案 0 :(得分:2)

我知道您已经通过解决方法解决了您的问题,但注册帮助以执行原生方式非常麻烦。

问题在于每个Handlebars帮助程序都会覆盖上下文并将新的上下文嵌套在父上下文中,因此您必须更进一步,例如像 UNIX 这样的目录。

因此,要访问each->if内的lang,您必须使用:

{{ ../../lang }}

答案 1 :(得分:0)

我通过创建一个把手辅助函数找到了解决方案:

  

Handlebars.registerHelper('language',function(){               return self.lang; });

然后在模板中我可以使用{{language}}  我想要的地方。