同时请求两个模型



>我有两个多对多的模型。它们在我的应用程序的第一页上使用,我在加载它们时遇到问题。

两种型号都只有少量项目(<200),我想在一个findAll请求中完全加载两个模型。 但是,随着第一个模型的加载,Ember 开始逐项获取第二个模型的缺失数据。 如果我尝试单独加载模型,则会出现错误,并且必须为hasMany属性设置{async:true}。 但是出于某种原因,Ember无法识别第二个模型请求的json。

无论如何可以获取两个模型并等到两个加载后再继续吗?

谢谢。

我猜你正在做一些类似的事情:

App.IndexRoute = Ember.Route.extend({
  model: function() {
    // Fetch the records of the first model 
    return this.store.find('post');
  },
  setupController: function(controller, model) {
    this._super(controller, model);
    this.store.find('comment').then(function(comments) {
      controller.set('comments', comments)
    });
  }
});

从路由的model挂钩返回的任何承诺都将导致路由器暂停转换,直到该承诺实现。在上述情况下,路由器将等待posts请求解析。因此,我们需要指示路由器等待两个请求完成。

输入 Ember.RSVP.allEmber.RSVP.hash 。这些方法允许将多个承诺合并为一个。他们返回一个新的承诺,只有当所有单独的承诺都实现时,这个承诺才会实现。以下是如何使用Ember.RSVP.hash

App.IndexRoute = Ember.Route.extend({
  model: function() {
    var store = this.store;
    return Ember.RSVP.hash({
      posts: store.find('post'),
      comments: store.find('comment')
    });
  },
  setupController: function(controller, models) {
    var posts = models.posts;
    var comments = models.comments;
    controller.set('content', posts);
    controller.set('comments', comments);
  }
});

相关内容

  • 没有找到相关文章

最新更新