在Handlebars 2+中,如何在这样的循环中动态读取属性?objects是一个对象数组.keys是一个字符串数组.我想循环每个对象的每个键,并将其.foo值放在span.
{{#each objects}}
{{#each keys}}
<span>{{../this.{{this}}.foo}}</span>
{{/each}}
{{/each}}
Run Code Online (Sandbox Code Playgroud)
普通车把2+有可能吗?或者......有帮助吗?
没有助手,我没有看到如何做到这一点.
有了帮助者,Handlebars中的一切都是可能的(但有点难看).
例如,您可以使用以下内容:
{{#each objects}}
{{#each keys}}
<span>{{lookupProp ../this this 'foo'}}</span>
{{/each}}
{{/each}}
Run Code Online (Sandbox Code Playgroud)
和帮手:
Handlebars.registerHelper('lookupProp', function (obj, key, prop) {
return obj[key] && obj[key][prop];
});
Run Code Online (Sandbox Code Playgroud)
看看小提琴.
自3.0.3版以来,Handlebars内置了lookup 助手.
小智 6
好的...花了几个小时在谷歌上搜索并找到一个不错的解决方案,因为我遇到了同样的问题,但没有找到任何...
我和 Larry 一样高兴,当我终于想出办法让这个工作时,我从椅子上跳了起来:D
这样,您可以使用动态键访问对象值,
演示对象:
var categories = {
onion: { name: 'bar', id: 4 },
apple: { name: 'demo', id: 2 },
carrot: { name: 'foo', id: 3 },
Root: [
{ name: 'apple' },
{ name: 'onion' },
{ name: 'carrot' }
]
};
Run Code Online (Sandbox Code Playgroud)
而不是尝试这样的事情:(这是行不通的)
{{#each categories.[@key]}}
or
{{#each categories.[mykey]}}
Run Code Online (Sandbox Code Playgroud)
你可以做:
{{#each categories.[Root] as |main-category|}}
{{#each (lookup ../categories main-category.name) as |sub-category|}}
{{sub-category.name}}
{{/each}}
{{/each}}
Run Code Online (Sandbox Code Playgroud)
希望它也能对其他人有所帮助:)
对于不想循环的其他人,您可以使用with例如。
{{#with (lookup myObject myKeyVar) as |subObject|}}
{{subObject.key}}
{{/with}}
Run Code Online (Sandbox Code Playgroud)