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 - Fatal编程技术网

Ember.js 同时请求两个模型

Ember.js 同时请求两个模型,ember.js,ember-data,Ember.js,Ember Data,我有两个多对多的模型。它们在我的应用程序的第一页上使用,我在加载它们时遇到问题 两种型号都只有少数几项(我猜您是在按照以下思路进行操作: App.IndexRoute = Ember.Route.extend({ model: function() { // Fetch the records of the first model return this.store.find('post'); }, setupController: function(contro

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


两种型号都只有少数几项(我猜您是在按照以下思路进行操作:

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)
    });
  }
});
从路由的
模型
钩子返回的任何承诺都将导致路由器暂停转换,直到该承诺得到满足。在上述情况下,路由器将仅等待以解决
posts
请求。因此,我们需要指示路由器等待两个请求完成

输入和。这些方法允许将多个承诺合并为一个。它们返回一个新的承诺,该承诺仅在所有单个承诺都实现时才会实现。下面是使用
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);
  }
});

非常感谢!效果很好!!很抱歉没有提供代码示例。我实际上在两个不同的渲染帮助程序中使用模型,每个渲染帮助程序都有自己的控制器。出于某种原因,当它到达这些控制器时,它再次运行了承诺?我想余烬数据的一部分是加载缓存数据?我应该做些什么吗有什么不同吗?在
#link to
的情况下,这是如何工作的,在这种情况下,
模型
钩子没有被调用?对于基于查询参数的模型,这不会飞行,因为refreshModel:true不会调用setupController钩子。我似乎也不知道如何在setupController方法中获取参数。您不需要调用如果您通过model:model.posts和model.comments访问帖子和评论,请设置控制器。