灰烬车把模板访问深层对象属性

时间:2018-07-12 05:54:37

标签: javascript ember.js handlebars.js

在我的Ember应用程序中,我有以下代码

JS组件

row = {};
Ember.set(row[my.constants.fieldKey], "cssType", 'leftPadding')

组件HBS

{{my-field cssType=(get row (my-field-key 'SECTION_ID' 'FIELD_ID') cssType)}}

所以我想在组件中将my-field的'cssType'属性作为'leftPadding'传递。

上面的hbs代码不起作用。

基本上,我正在尝试访问hbs模板中的深层/嵌套对象属性 我什至尝试了查找,但是没有用。请提出建议。

1 个答案:

答案 0 :(得分:1)

get助手将对象作为第一个参数,并将路径(点分隔的字符串,例如'level1.level2')作为第二个参数。

如果row是一个数组(而my.constants.fieldKey是一个整数索引),则需要另一个帮助器,该帮助器按索引从数组中返回对象。例如,ember-composable-helpers插件提供了object-at助手,可以这样使用:

{{my-field cssType=(get (object-at (my-field-key 'SECTION_ID' 'FIELD_ID') row) 'cssType')}}

如果row是一个对象(而my.constants.fieldKey是一个字符串),那么这应该起作用:

{{my-field cssType=(get row (concat (my-field-key 'SECTION_ID' 'FIELD_ID') '.cssType'))}}