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

时间:2013-07-30 11:36:50

标签: javascript handlebars.js

我理解如何在Handlebars中横向数据源,但我遇到了无法解决的情况。

使用“../”可以到达父模板范围,但是当迭代对象的子对象时,它似乎返回对象而不是子对象。

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

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

这是一个演示这个问题的小提琴。 http://jsfiddle.net/sidonaldson/MDdn2/

任何人都可以解释什么是错的吗?

1 个答案:

答案 0 :(得分:2)

事实证明我原来的想法是错误的。我只在Ember.js的上下文中使用了Handlebars.js。 Ember提供了一些普通把手中没有的额外助手,所以这不是一个选择。但我似乎确实找出了你的问题。查看this fiddle.

<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助手似乎有用。希望我能接近你想要的东西。