Ember.js:从组件的javascript访问计算别名

时间:2017-08-16 14:22:30

标签: javascript ember.js ember-components

我目前有一个包含计算别名的模型,如下所示:

model: DS.belongsTo('device-model'),
manufacturerName: Ember.computed.alias('model.manufacturer.name')

然后我有一个如下调用的组件:

{{my-component model=model}}

现在,在组件的Handlebars模板中,我可以使用{{model.manufacturerName}}轻松访问计算属性,但是在my-component.js我无法使其工作。我尝试过:

console.log(this.get('model').get('manufacturerName'))

但是,输出为undefined。到目前为止,我从my-component.js获取制造商名称的唯一方法是:

this.get('model').get('model')
.then((model) =>{
  return model.get('manufacturer')
})
.then((manufacturer) => {
  console.log(manufacturer.get('name'))
})

所以,我想知道Handlebars模板做了什么,我不能在它的javascript对应中做什么?似乎Handlebars模板遵循承诺,而我必须在组件的javascript时手动完成。

谢谢!

1 个答案:

答案 0 :(得分:-1)

我认为这个问题是因为你的belongsTo关系。因为{async:true}是Ember中关系的默认值。因此它只在您实际请求它们时才获取相关实体。这意味着您的模型未加载,这意味着您的manufacturerName未加载,因为它是model.manufacturerName.name的别名。