【问题标题】:Handlebarsjs: how to get a variable in an each loop? [duplicate]Handlebarsjs:如何在每个循环中获取变量? [复制]
【发布时间】: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


【解决方案1】:

在您的each 循环中,您处于adminUser 对象的上下文中。这些对象没有assignedAdminUser 属性,这就是为什么您的if_eq 检查每次都失败的原因。

使用

{{#if_eq adminUsername ../assignedAdminUser}}

改为。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-14
    • 1970-01-01
    • 2017-04-25
    • 2020-04-24
    • 2018-10-13
    相关资源
    最近更新 更多