我有一个hasMany
feedTracks
feed
对象,每个feedTrack
都有一个与之关联的track
。
这些关系可以成功工作,但是当我尝试使用计算属性时,某些内容会中断。
在饲料模型上,我有:
secondFeedTrack: computed('feedTracks.[]', function() {
return this.get('feedTracks').then((feedTracks) => {
return feedTracks.objectAt(1);
});
})
当我这样做{{log feed.secondFeedTrack}}
时,我得到:
Object { _id: 136, _label: undefined, _state: undefined, _result: undefined, _subscribers: Array[0] }
这不是什么都没有,但它看起来不对。
当我这样做{{log feed.secondFeedTrack.track}}
时,我会得到undefined
.
我做错了什么,没有从计算属性中正确获取feedTrack
?
问题是Ember Data为存储方法返回PromiseObject和PromiseArrays,但由于您正在.then
promise(async hasMany(,它变成了常规承诺。
如果将其简化为:
secondFeedTrack: computed('feedTracks.[]', function() {
return this.get('feedTracks').objectAt(1);
});
})
它应该工作,因为它应该随着关系的解决而更新。