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访问帖子和评论,请设置控制器。