Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ember.js 如何在余烬解析关系之前获取关系值_Ember.js_Ember Data_Promise - Fatal编程技术网

Ember.js 如何在余烬解析关系之前获取关系值

Ember.js 如何在余烬解析关系之前获取关系值,ember.js,ember-data,promise,Ember.js,Ember Data,Promise,我有三种型号: App.Model1 = DS.Model.extend({ ref2: DS.hasMany('model2', {async: true}) }); App.Model2 = DS.Model.extend({ ref3: DS.belongsTo('model3', {async: true}) }); App.Model3 = DS.Model.extend({ someProp: DS.attr('string') }); 问题是,我需要在一条路

我有三种型号:

App.Model1 = DS.Model.extend({
   ref2: DS.hasMany('model2', {async: true})
});

App.Model2 = DS.Model.extend({
   ref3: DS.belongsTo('model3', {async: true})
});

App.Model3 = DS.Model.extend({
   someProp: DS.attr('string')
});
问题是,我需要在一条路线上获取三个模型,但我只需要必要的。这意味着我需要获取由
Model1
引用的
Model1
Model2
,最后是由
Model2
引用的
Model3

Ember数据做得很好,因为它在一个XHR请求中解析了
的多个
关系。问题是我想做这样的事情(例如在
beforeModel
中):


但这样做会使ember数据执行与数组中项目数量相同的xhr请求。如果我可以在引用对象解析关系之前获取其id,那么我就可以在一个请求中获取所有
Model3
对象。

如果您在后端对此进行控制,则可以更轻松地寻址此服务器端,在原始响应中返回相关记录。如果您总是以高于您的方式一起请求记录,这一点尤其正确。此外,您还可以将关系更改为非异步

{
  model1s:[
    {
       id:1,
       ref2: [1,2]
    },
    {
       id:2,
       ref2: [3,4]
    }
  ],
  model2s:[
    {
       id:1,
       ref3: [1,2]
    },
    {
       id:2,
       ref3: [3,4]
    }  
    .....
  ],
  model3s:[
   ....
  ]
}

谢谢我就知道你会这么说。我应该有一个确切的解释,他们并不总是被要求在一起,这解释了为什么我想做我要求的事情。
{
  model1s:[
    {
       id:1,
       ref2: [1,2]
    },
    {
       id:2,
       ref2: [3,4]
    }
  ],
  model2s:[
    {
       id:1,
       ref3: [1,2]
    },
    {
       id:2,
       ref3: [3,4]
    }  
    .....
  ],
  model3s:[
   ....
  ]
}