Handlebars.js-在每个循环、if语句和子对象中获取父上下文

Handlebars.js - Getting parent context within an each loop, an if statement and a child object

本文关键字:对象 获取 上下文 语句 if js- 循环 Handlebars      更新时间:2023-09-26

我知道如何在Handlebars中遍历数据源,但我偶然发现了一种我无法解决的情况。

使用"../"可以到达父模板作用域,但当遍历对象的子对象时,它似乎返回的是对象而不是子对象。

{{#each content.items}}
{{#if prop}}
<p>{{prop}} + {{../../variable}}</p>
{{/if}}
{{/each}}

如果您遍历一个名为"content"的对象,则上面的代码片段可以正常工作,但只要您遍历它的子对象"content.items",它就不再返回正确的范围。

这里有一把小提琴来说明这个问题。http://jsfiddle.net/sidonaldson/MDdn2/

有人能说明出了什么问题吗?

原来我的想法是错误的。我只在Ember.js的上下文中使用过Handlebars.js。Ember提供了一些在普通Handlebars中不可用的额外助手,所以这不是一个选项。但我似乎确实解决了你的问题。检查一下这把小提琴。

<p>IN CONTENT</p>
{{#with content}}
{{#each items}}
{{#if prop}}
<p>{{prop}} + {{../../variable}}</p>
{{/if}}
{{/each}}
{{/with}}
<p>OUTSIDE CONTENT</p>
{{#each items}}
{{#if prop}}
    <p>{{prop}} + {{../../variable}}</p>
{{/if}}
{{/each}}

我不知道为什么它一开始不起作用,但使用with辅助对象,然后each辅助对象似乎起作用了。希望我已经接近你想要的了。