在Handlebars模板中的另一个If语句中使用If语句

If statement within another if statement in Handlebars templates

本文关键字:If 语句 另一个 Handlebars      更新时间:2023-09-26

这些都是我传递给handlebars模板的对象。

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}}

有什么办法吗?非常感谢所有的回答/评论!

{{#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演示了解决方案:嵌套if语句上下文转义

我希望这对你有帮助!