我了解如何在 Handlebars 中横穿数据源,但我偶然发现了一种我无法解决的情况。
使用“../”您可以到达父模板范围,但是当遍历对象的子对象时,它似乎返回对象而不是子对象。
{{#each content.items}}
{{#if prop}}
<p>{{prop}} + {{../../variable}}</p>
{{/if}}
{{/each}}
如果您遍历一个名为“content”的对象,上面的代码片段可以正常工作,但是一旦您遍历它的子对象“content.items”,它就不再返回正确的范围。
这是一个演示问题的 fiddle 。 http://jsfiddle.net/sidonaldson/MDdn2/
任何人都可以阐明问题所在吗?
最佳答案
原来我原来的想法是错误的。我只在 Ember.js 的上下文中使用过 Handlebars.js。 Ember 提供了一些在普通 Handlebars 中不可用的额外助手,因此这不是一个选项。但我似乎确实弄清楚了你的问题。检查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
帮助器似乎起作用了。希望我已经接近你想要的。
关于javascript - Handlebars.js - 在每个循环、if 语句和子对象中获取父上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17945998/