我需要在控制器内部浏览我的关系,并且没有想出如何做到这一点。我有以下型号。
// models/asset.js
export default DS.Model.extend({
name: DS.attr('string'),
type: DS.belongsTo('lookup', {inverse: null, async: true}),
children: DS.hasMany('asset', {inverse: 'parent', async: true}),
parent: DS.belongsTo('asset', {inverse: 'children', async: true})
});

// models/lookup.js
export default DS.Model.extend({
value: DS.attr('string'),
children: DS.hasMany('lookup', {inverse: 'parent', async: true}),
parent: DS.belongsTo('lookup', {inverse: 'children', async: true})
});

我当前资产的类型基于父资产的子记录。 在控制器中的一个动作中,我需要获得当前资产的父母类型的孩子。我会喜欢来使用:
return this.store.findAll('lookup', this.get('asset.parent.type.children')).then(function(parentTypeChildren) {});

但生活并不那么容易。
如果我已加载资产并且this.get('asset.parent')
我是否获得完整的资产记录或仅获得父资产ID?
关于此的任何提示?非常感谢所有帮助。
答案 0 :(得分:0)
由于您有async: true
,this.get('asset.parent')
会触发服务器调用(如果它尚未存储在商店中)并获取父资产(作为set
调用)并返回它是一种承诺。 this.get('asset.data.parent')
将返回父级的ID。
所以基本上你应该尝试这样的事情(假设asset.parent.type
已经在你的商店中):
var childrenLookUps = this.get('asset.parent.type.children');
childrenLookUps.then(function(){
// do something with your childrenLookUps
});