2013-04-01 41 views
1

我想知道是否有一种方法来简化这个句柄模板不使用帮手。把手:使用子属性访问家长的JSON属性

数据:

{ 
    games:[game: {teamID:1}] 
    teams:{1:{name:'Team Name'}} 
} 

模板(注意,是不到{{#each games}}

{{#teamFetch ../this teamID 'name'}}{{/teamFetch}} 

助手:

Handlebars.registerHelper('teamFetch', function(season, teamid, property){ 
    return season.teams[teamid][property]; 
}); 

我是新来的把手,但是这是唯一的我可以根据游戏中的id找出如何在赛季中访问某个特定的球队,并获得一个该团队的财产。有没有更简单的方法,不需要辅助函数?

回答

4

没有办法避开不使用帮手。这是因为把手不允许您在其段文字表示法中传递变量来指定可变路径。在Handlebars documentation regarding Expressions

要引用属性是不是有效的标识符,可以使用片段的文字符号:{{#each文章[10]。点评}} {{/每}}

所以......理想情况下,我们希望能够做这样的事情:

{{#each games}} 
     {{../teams.[teamID].name}} 
{{/each}} 

但截至目前,没有办法在teamID的值传递到../teams.[ ].name

只有能够这样做的:

{{#each games}} 
     {{../teams.[0].name}} 
{{/each}} 

它只能解释值,例如。 0,并且无法解析变量,例如。 teamID