在车把小胡子内按键访问 array/object 个变量

Accessing array/object variables by key, within a handlebars mustache

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

我有以下对象:

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

等等等

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

我需要访问上述数组结构中的变量,基于当前正在循环的[​​=39=]。我试过:

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

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

{{fields.(field_id).complete}}

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

其中 none 有效。

有办法吗?

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

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

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

{{getfield fields field_id 'complete'}}

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

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

或者,您可以将查找助手与 subexpression:

一起使用
{{lookup (lookup fields field_id) 'complete'}}