2015-07-21 86 views
1

我搜索了很多问题,但还没有找到答案。 我用车把模板和具有数据结构:在把手中的动态路径

{ 
    privileged_users: [ "user1", "user2" ], 
    users: { 
    user1: { name: "N1" }, 
    user2: { name: "N2" }, 
    user3: { name: "N3" } 
    } 
} 

我wan't输出所有特权用户提供一些模板。像这样:

<table> 
    {{#each privileged_users}} 
    <tr><td>{{../users.[this].name}}</td></tr> 
    {{/each}} 
</table> 

是否有可能没有额外的帮手?

如果不是我怎么能写更改上下文到../users.[this]的帮助程序?

回答

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版开始,把手内置查找helper。 阻止帮助者的替代方案可以是Handlebars Partial Context方法,即定义/注册一个部分,并将其与主模板中的不同上下文一起使用。

+0

你的回答是关于要避免什么 - 为用户的每个属性编写完整路径。问题是“如果不是,我怎么能写出变更上下文到../users.[this]的帮助程序?”。 –

+0

我已经更新了[jsFiddle](http://jsfiddle.net/7xak2udw/4/),它有一个*块助手*,并试图解释它是如何工作的。 – AimZ