Ember.js:从组件的javascript获取模型关系
问题描述:
我正在构建一个组件,并且我注意到了一个对我来说似乎很奇怪的行为。我的组件被调用如下:Ember.js:从组件的javascript获取模型关系
{{my-component model=model}}
我的模型包含如下关系:
type: DS.belongsTo('type')
现在,在my-component.js
,如果我登录到控制台this.get('model.type.name')
(或this.get('model').get('type').get('name')
),我得到undefined
。但是,如果在my-component.hbs
中插入了{{model.type.name}}
,则该值显示正确。
我真的不理解这种行为:我如何从组件的JavaScript中访问模型的关系,就像我在组件的Handlebars模板中一样?
谢谢!
答
在余烬数据中,关系被视为Promise,因此您应该使用then
作为结果。
this.get('model').get('type').then((result) =>{
console.log(' Name ', result.get('name'));
});
参见: https://guides.emberjs.com/v2.14.0/models/relationships/#toc_relationships-as-promises
感谢您的反馈,但是,如果我尝试做'this.get( '模型'),那么(型号=> {执行console.log(模型)}) ',我得到'TypeError:this.get(...)。然后不是函数'。我不明白为什么会出现这种情况:/ – finferflu
尽管您的代码片段实际工作,但我想知道为什么this.get('model')。then'不是函数... – finferflu
这样的关系作为'belongsTo'和'hasMany'将返回'Promise'。这里'model'不是从'model'钩子的解析模型。你可以做'然后'只为承诺 – kumkanillam