检索未在 Handlebars 中迭代的对象的数据

Retrieve data an object that is not being iterated on in Handlebars

在我的网站中,我试图合并来自两个对象的信息。我有一个导航对象和一个语言对象。我遍历导航对象,但语言对象是固定的。来自 NodeJS 的数据是:

app.get(urljoin(relUriPathNews, ":type"), (req, res) => {
    res.render('some-page', {
        webpage: webpageInformation(),
        main_navigation: navigation
    })
})

在车把中我有:

<div class="collapse navbar-collapse" id="navbar-collapse"></div>
    <ul class="nav navbar-nav text-uppercase main-nav">
        {{!-- {{webpage.params.langs}} --}}
        {{#main_navigation.navigation}}
        <li class="dropdown">
            <a href=/news/{{parent}}{{title}}?languages={{webpage.params.langs}}>{{title}}
                <span class="ion-ios7-arrow-right nav-icn"></span>
                </a>
            <ul class="dropdown-menu text-capitalize" role="menu">
                {{#sub_page_definition_pages}}
                <li><a href=/news/{{parent}}{{title}}?languages={{webpage.params.langs}}>{{title}}</a></li>
                {{/sub_page_definition_pages}}
            </ul> 
        </li>
        {{/main_navigation.navigation}}

    </ul>
</div>

如您所见,我遍历了 main_navigation_navigation。然后我从那里得到 parenttitle。但是,webpage.params.langs 来自另一个对象,即我没有迭代的对象,因此我得到 ''.

但是,如果我要从上面 {{#main_navigation.navigation}} 中取消引用 {{webpage.params.langs}},我会得到值。原来如此。

问题。如何从 navigation 的 for 循环中获取 webpage.params.langs 的值?

您无法在循环中访问 webpage.params.lang,因为您处于当前迭代的元素上下文中。为了访问父元素,您可以使用 @root 助手。将车把块更改为以下应该有效 -

<div class="collapse navbar-collapse" id="navbar-collapse"></div>
    <ul class="nav navbar-nav text-uppercase main-nav">
        {{!-- {{webpage.params.langs}} --}}
        {{#main_navigation.navigation}}
        <li class="dropdown">
            <a href=/news/{{parent}}{{title}}?languages={{@root.webpage.params.langs}}>{{title}}
                <span class="ion-ios7-arrow-right nav-icn"></span>
                </a>
            <ul class="dropdown-menu text-capitalize" role="menu">
                {{#sub_page_definition_pages}}
                <li><a href=/news/{{parent}}{{title}}?languages={{@root.webpage.params.langs}}>{{title}}</a></li>
                {{/sub_page_definition_pages}}
            </ul> 
        </li>
        {{/main_navigation.navigation}}

    </ul>
</div>