Ember.js 当所有信息都没有通过Ajax下载时,访问Ember中的BelongsTo元素

Ember.js 当所有信息都没有通过Ajax下载时,访问Ember中的BelongsTo元素,ember.js,ember-data,Ember.js,Ember Data,我使用的是Ember数据和Ember CLI,我有两个Ember模型 clip.js export default DS.Model.extend({ name: DS.attr('string'), scene: DS.belongsTo('scene') }); scene.js export default DS.Model.extend({ clip: DS.belongsTo('clip') }); 剪辑是从场景独立加载的,所以当场景下来时,JSON看起来是这

我使用的是Ember数据和Ember CLI,我有两个Ember模型

clip.js

export default DS.Model.extend({
   name: DS.attr('string'),
   scene: DS.belongsTo('scene') 
});
scene.js

export default DS.Model.extend({
   clip: DS.belongsTo('clip') 
});
剪辑是从场景独立加载的,所以当场景下来时,JSON看起来是这样的

{scenes: [{id: 1, clip_id: 5}, {id:2, clip_id:10}]}
剪辑id与已加载到Ember中的剪辑不对应

我希望能够调用
scene.clip.name


有谁能推荐我需要做些什么来启动并运行它吗?

您需要将clip标记为异步。此外,您使用的foo
\u id
格式不是
DS.RESTAdapter
的标准格式。它只需要
foo
。您可以使用
DS.ActiveModelAdapter
,它确实希望使用这种格式

clip: DS.belongsTo('clip', {async:true})
然后它是一个异步属性,所以在第一次访问它时(或者在任何时候,如果您愿意,或者不保证它已被获取),您需要使用
Then


谢谢你的回答-我应该说,作为独立的场景,剪辑已经在系统中完全加载。我将更改API以查看其是否有效,再次感谢。mmmmmmmmmmmmmmmmmm,这就是您所说的
剪辑id确实对应于系统中已存在的剪辑
,很抱歉,我以为您是指后端。对于阅读此答案的其他人来说,帮助我的部分是resadapter没有预料到
\u id
,在我的例子中,我也控制了API,所以在那里做了更改。
scene.get('clip').then(function(clip){
  console.log(clip.get('name'));
});