如果语句在Handlebars模板中的另一个if语句中

时间:2013-06-05 11:17:01

标签: javascript handlebars.js template-engine

这些是我传递给车把模板的所有对象。

self.template = template({ data: self.model, lang:self.lang, page:self.mainPage, subpage:self.param }); 

然后在foreach循环中我有一个if语句,我无法访问父上下文元素。我在模板中的代码和问题如下所示:

    {{#each data}}  
        <h1>{{../subpage}}</h1> --> This is giving me a subpage value
        {{#if this.brand}} 

                  {{#if ../subpage}}
                    <h1>WHY IS THIS NOT SHOWING?</h1> --> This is what i am trying to achieve
                  {{/if}}

        {{/if}}  
    {{/each}}

任何想法如何实现这一目标?非常感谢您的所有答案/评论!

1 个答案:

答案 0 :(得分:0)

{{#if this.brand}}进入另一个级别的上下文,因此您必须转义到父上下文不是一次,而是两次。

因此,您的模板应为:

{{#each data}}  
    <h1>{{../subpage}}</h1>
    {{#if this.brand}} 

        {{#if ../../subpage}}
            <h1>This shows now!</h1>
        {{/if}}

    {{/if}}  
{{/each}}

这应该与self.model类似于:

的值一起使用
[
    {
        brand: "Brand A",
        otherFields: "here"
    }
]

这是一个演示解决方案的jsFiddle:nested if statement context escaping

我希望有所帮助!