【问题标题】:Accessing array/object variables by key, within a handlebars mustache在车把胡须内按键访问数组/对象变量
【发布时间】:2017-01-11 10:08:12
【问题描述】:

我似乎找不到这样做的方法,并尝试过在 StackOverflow 上发布的子表达式和各种其他答案 - 但他们似乎都认为我事先知道我正在使用的密钥。

我有以下对象:

{
    fields: {
        1: {
            complete: 1,
            submitted: 0
        },
        2: {
            complete: 1,
            submitted: 0
        }
}

等等。等等

在我的 Handlebars 模板中,我正在循环遍历一组对象。该数组中的每个对象都有一个 field_id 键,它是一个与上例中的 1 或 2 匹配的数字。

我需要根据当前循环的 field_id 访问上述数组结构中的变量。我试过了:

{{fields[(field_id)].complete}}

{{fields[{{field_id}}].complete}}

{{fields.(field_id).complete}}

{{fields.({{field_id}}).complete}}

它们都不起作用。

有没有办法做到这一点?

【问题讨论】:

  • field_id 来自哪里?

标签: javascript arrays object handlebars.js mustache


【解决方案1】:

不会为此创建一个自定义助手。相反,我会使用现有的Lookup helperwith block helper 合作:

{{#with (lookup fields field_id) as |field|}}
    {{field.complete}}
{{/with}}

或者,您可以使用带有subexpression 的查找助手:

{{lookup (lookup fields field_id) 'complete'}}

【讨论】:

  • 我在这里使用了后一种解决方案,比我的自定义助手要整洁得多。非常感谢!
【解决方案2】:

我通过注册一个自定义助手来完成这项工作:

Handlebars.registerHelper( 'getfield', function ( data, field_id, key ) {
    var val = ( data[ field_id ] ) ? data[ field_id ][ key ] : '';
    return val;
} );

然后在我的模板中使用它:

{{getfield fields field_id 'complete'}}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-26
    • 1970-01-01
    • 2017-04-08
    • 2019-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多