我正在尝试使用Handlebars templating engine从浏览器中编译一些模板。我现在使用每个循环构建一个下拉列表,我想要选择其中一个选项。为此,我复制了一个帮手(来自this SO answer),如下所示:
Handlebars.registerHelper('if_eq', function(a, b, opts) {
if(a == b)
return opts.fn(this);
else
return opts.inverse(this);
});
然后我将以下物品提供给车把:
{
"adminUsers": [
{
"adminUsername": "user1"
},
{
"adminUsername": "user2"
},
{
"adminUsername": "user3"
}
],
"assignedAdminUser": "user2"
}
在我的Handlebars模板中,我这样做:
{{#each adminUsers}}
{{#if_eq adminUsername assignedAdminUser }}
<option selected>{{adminUsername}}</option>
{{else}}
<option>{{adminUsername}}</option>
{{/if_eq}}
{{/each}}
但遗憾的是,没有选择任何选项。当我简单地填写'a'和'a'时,平等助手确实有效,但不知何故,在#each循环中,assignedAdminUser不可用。我可以使用循环外部的{{assignedAdminUser}}轻松回显它,但它内部似乎不可用。
有人知道如何检查循环中的adminUser是否等于分配的用户,以便我可以将该选项设置为选中状态吗?欢迎所有提示!
答案 0 :(得分:1)
在each
循环中,您处于adminUser
对象的上下文中。这些对象没有assignedAdminUser
属性,这就是每次if_eq
检查失败的原因。
使用
{{#if_eq adminUsername ../assignedAdminUser}}
代替。