【发布时间】:2014-07-11 05:18:49
【问题描述】:
我正在尝试使用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”时,equal 助手确实有效,但不知何故,assignedAdminUser 在#each 循环中不可用。我可以在循环外使用 {{assignedAdminUser}} 轻松地回显它,但在它内部似乎不可用。
有谁知道我如何检查循环中的 adminUser 是否等于分配的用户,以便我可以将该选项设置为选中?欢迎所有提示!
【问题讨论】:
-
我自然是在发布答案后才注意到的。
标签: javascript loops if-statement handlebars.js