检索未在 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
。然后我从那里得到 parent
和 title
。但是,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>
在我的网站中,我试图合并来自两个对象的信息。我有一个导航对象和一个语言对象。我遍历导航对象,但语言对象是固定的。来自 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
。然后我从那里得到 parent
和 title
。但是,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>