Javascript 使用手柄访问父级的属性';每个';环
考虑以下简化数据:Javascript 使用手柄访问父级的属性';每个';环,javascript,handlebars.js,Javascript,Handlebars.js,考虑以下简化数据: var viewData = { itemSize: 20, items: [ 'Zimbabwe', 'dog', 'falafel' ] }; 和把手模板: {{#each items}} <div style="font-size:{{itemSize}}px">{{this}}</div> {{/each}} {{#每个项目} {{this}} {{/每个}} 这将不起作用,因为在每个循环中
var viewData = {
itemSize: 20,
items: [
'Zimbabwe', 'dog', 'falafel'
]
};
和把手模板:
{{#each items}}
<div style="font-size:{{itemSize}}px">{{this}}</div>
{{/each}}
{{#每个项目}
{{this}}
{{/每个}}
这将不起作用,因为在
每个
循环中,父作用域是不可访问的——至少在我尝试过的任何方式下都是不可访问的。我希望有办法做到这一点 实现这一点有两种有效的方法
使用。/
通过在属性名称前面加上。/
,可以引用父范围
{{#each items}}
<div style="font-size:{{../itemSize}}px">{{this}}</div>
{{#if this.items.someKey}}
<div style="font-size:{{../../itemSize}}px">{{this}}</div>
{{/if}}
{{/each}}
{{#每个项目}
{{this}}
{{{如果是this.items.someKey}
{{this}}
{{/if}
{{/每个}}
通过重复。/
,您可以提升多个级别。例如,要提升两个级别,请使用。/../key
有关更多信息,请参阅
使用@root
通过将@root
前置到属性路径,可以从最顶端的范围向下导航(如中所示)
有关更多信息,请参阅。新方法使用点表示法,不推荐使用斜线表示法() 因此,访问父元素的实际方法如下:
@root.grandfather.father.element
@root.father.element
在您的具体示例中,您将使用:
{{#each items}}
<div style="font-size:{{@root.viewData.itemSize}}px">{{this}}</div>
{{/each}}
将创建一个键和值变量,子级可以在没有
对depthed变量引用的需要。在上面的示例中,{{key}}>与{{@../key}}相同,但在许多情况下更具可读性
不幸的是../dereference似乎不能通过partials工作。但我们可以将属性添加到传递到分部的上下文中:
Name: {{parent.name}}
{{#each children}}
{{> childpartial this parent=../parent}}
{{/each}}
儿童部分:
{{name}} is child of {{parent.name}}
更多:
我们可以使用{{../parent.propertyname}}访问父级只需注意使用../获取父级属性即可。如果您有一个带有嵌套的each语句#If then just do./只会让您达到#each的级别。因此,您必须执行.././itemSize才能返回到#eachHow我可以在mustache.js模板引擎中获得此功能吗?@blushrt您没有。那是把手specific@TheTaxPayer你刚刚帮我省去了大量的头痛!穿上袜子继续摇滚:)把一个较高的级别传递给一个助手怎么样?#每个值使用“@root.itemSize”为我上一个级别。从技术上讲,这不是上一个级别-它是从根上下一个级别,只有在你下一个级别时才有效。如果不知道当前嵌套级别,则此方法不起作用。
{{name}} is child of {{parent.name}}