我搜索了很多问题,但没有找到答案。 我使用把手模板并具有数据结构:
{
privileged_users: [ "user1", "user2" ],
users: {
user1: { name: "N1" },
user2: { name: "N2" },
user3: { name: "N3" }
}
}
我不想用一些模板输出所有特权用户。像这样:
<table>
{{#each privileged_users}}
<tr><td>{{../users.[this].name}}</td></tr>
{{/each}}
</table>
没有额外的助手可以吗?
如果不是这样我怎么能用更改上下文来编写块帮助器到../users.[this]?
答案 0 :(得分:2)
注册以下帮助者:
Handlebars.registerHelper('lookupProp', function (obj, key, prop) {
return obj[key] && obj[key][prop];
});
然后修改模板,如:
<table>
{{#each privileged_users}}
<tr><td>{{lookupProp ../users this 'name'}}</td></tr>
{{/each}}
</table>
这是工作fiddle。
上一个只是一个简单的表达式助手。
根据问题,现在这是一个有效的jsfiddle。
自3.0.3版以来,Handlebars内置了查找helper。 块助手的替代方法可以是Handlebars Partial Context方法,即定义/注册partial,并在主模板中使用不同的上下文。