Javascript js-在each循环、if语句和子对象中获取父上下文
我知道如何在车把内横切数据源,但我偶然发现了一种无法解决的情况 使用“./”可以访问父模板作用域,但在遍历对象的子对象时,它似乎返回的是对象而不是子对象Javascript js-在each循环、if语句和子对象中获取父上下文,javascript,handlebars.js,Javascript,Handlebars.js,我知道如何在车把内横切数据源,但我偶然发现了一种无法解决的情况 使用“./”可以访问父模板作用域,但在遍历对象的子对象时,它似乎返回的是对象而不是子对象 {{#each content.items}} {{#if prop}} <p>{{prop}} + {{../../variable}}</p> {{/if}} {{/each}} {{{#每个content.items} {{{#if prop}} {{prop}}+{{.././变量} {{/if} {{/每个}
{{#each content.items}}
{{#if prop}}
<p>{{prop}} + {{../../variable}}</p>
{{/if}}
{{/each}}
{{{#每个content.items}
{{{#if prop}}
{{prop}}+{{.././变量}
{{/if}
{{/每个}}
如果您迭代一个名为“content”的对象,上面的代码片段可以正常工作,但一旦您迭代它的子对象“content.items”,它就不再返回正确的范围
这里有一把小提琴来说明这个问题
有人能解释出什么是错的吗?原来我原来的想法是错的。我只在Ember.js的上下文中使用了handlebar.js。余烬提供了一些普通车把无法提供的额外助手,因此这不是一个选项。但我似乎明白了你的问题。检查 内容中的
{{{有内容}
{{{#每项}
{{{#if prop}}
{{prop}}+{{.././变量}
{{/if}
{{/每个}}
{{/与}}
外部内容
{{{#每项}
{{{#if prop}}
{{prop}}+{{.././变量}
{{/if}
{{/每个}}
我不知道为什么它一开始不起作用,但是使用
和助手,然后每个助手似乎都起作用了。希望我已经接近您想要的了。我不完全确定您当前的代码是怎么回事,但是一个简单的解决方案是使用{{{with}}
帮助程序保存外部范围。它可能也更容易阅读。GJK-如果你想在答案中演示,我会这样标记。听起来有点像我需要的#如果
创建了一个新的嵌套,那么我能想到的唯一一件事就是它从父嵌套中跳出到它的正上方。我不确定它是否回答了你的问题,但对于后代来说,在路径中添加#if嵌套和内容嵌套似乎是可行的<代码>{{prop}}+{{.././content/variable}}
<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}}