2017-08-15 48 views
1

我正在構建一個組件,並且我注意到了一個對我來說似乎很奇怪的行爲。我的組件被調用如下: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模板中一樣?

謝謝!

回答

1

在餘燼數據中,關係被視爲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

+0

感謝您的反饋,但是,如果我嘗試做'this.get( '模型'),那麼(型號=> {執行console.log(模型)}) ',我得到'TypeError:this.get(...)。然後不是函數'。我不明白爲什麼會出現這種情況:/ – finferflu

+0

儘管您的代碼片段實際工作,但我想知道爲什麼this.get('model')。then'不是函數... – finferflu

+1

這樣的關係作爲'belongsTo'和'hasMany'將返回'Promise'。這裏'model'不是從'model'鉤子的解析模型。你可以做'然後'只爲承諾 – kumkanillam