Ember.js 如何异步加载与ember页面模型不同的其他资源

Ember.js 如何异步加载与ember页面模型不同的其他资源,ember.js,ember-data,Ember.js,Ember Data,我有一个页面,其中有一个表列出了订单,所以我的OrdersIndexRoute model: function(){ return this.get('store').query('order', {...}); } 如果订单属于某个产品,我想添加一个select来过滤所选产品的订单 我可以通过调用this.get('store').query('product',{…})获得产品但不确定什么是正确的位置,我认为它在OrdersIndexController中,但这只是我的猜测,也许它

我有一个页面,其中有一个表列出了订单,所以我的
OrdersIndexRoute

model: function(){
    return this.get('store').query('order', {...});
}
如果订单属于某个产品,我想添加一个select来过滤所选产品的订单

我可以通过调用
this.get('store').query('product',{…})获得产品
但不确定什么是正确的位置,我认为它在
OrdersIndexController
中,但这只是我的猜测,也许它可以放在route activate挂钩中,但不知道如何从controller访问它,也许这种情况有一种模式,但我还没有找到一个好的例子或指南,以及如何做到这一点,避免每次重新加载模型时召回产品


感谢您的帮助。

您可以在钩子模型中使用Ember.RSVP.hash,以便在显示路由之前加载多个异步资源:

model() {
  return Ember.RSVP.hash({
    orders: this.get('store').query('order', {...}),
    products: this.get('store').query('product', {...})
  });
}

以后,您将不直接调用this.get('model'),而调用this.get('model.orders')或this.get('model.products')

问题是,由于sort_by=field之类的查询参数更改,每次重新加载模型时,它都会发出产品请求,我以前确实是这样做的,但每次我更改sort_by query参数时,模型函数都会请求订单以及不需要的产品