如何在车把模板中使用对象的括号表示法?

How to use bracket notation of object in handlebar template?

我正在从路由模板属性创建一个 emberjs 组件,我正在传递值以在模板中显示。但是我无法通过对象的括号表示法在组件模板中访问它。

//route.hbs
{{b-select 
    options=model.names
    valueProp='name'
}}

型号

import Ember from 'ember';

export default Ember.Route.extend({
    model() {
        return Ember.RSVP.hash({
            names: [{name: 'abc'}, {name: 'xyz'}]
        });
    }

});

组件 b-select hbs 文件

<select class="form-control" multiple={{multiple}}>
  {{#each options as |option|}}
    <option value="{{option}}">{{option[valueProp]}}</option>
  {{/each}}
</select>

如果我使用 option.name 而不是 option[valueProp],它就完美了。我如何动态地将 属性 传递给 select ?为什么括号符号不起作用

组件JS文件

import Ember from 'ember';
import fallbackIfUndefined from '../utils/computed-fallback-if-undefined';

export default Ember.Component.extend({
    multiple: fallbackIfUndefined(false),
    options: fallbackIfUndefined(null),
    valueProp: fallbackIfUndefined(0),
    actions: {

    },
    didInsertElement() {
        //initialize jquery functions
        this.$('select').selectpicker({size: 6});
    },
    willDestroyElement() {
        //remove all events
    }
});

我收到的错误是

错误:第 3 行解析错误: ...alue="{{option}}">{{option[valueProp]}}< ----------------------^ 期待 'ID'、'STRING'、'NUMBER'、'BOOLEAN'、'UNDEFINED'、'NULL'、'DATA',得到 'INVALID'

您可以使用车把查找助手:

http://handlebarsjs.com/builtin_helpers.html#lookup

试试这个:

<option value="{{option}}">{{lookup option valueProp}}</option>

您可以使用 {{get}} 助手:

<option value="{{option}}">{{get option valueProp}}</option>