我希望在我的路线中加载多个数据。例如,用户和他的视频。
网址如下所示:/user/fooUsername
但是要加载视频,我想使用用户的ID进行查询,所以我必须等待第一个承诺才能实现。
我的代码如下所示:
export default Ember.Route.extend({
model: function(params) {
var username = params.user_username;
var user = this.store.filter('user', {filters: {"username":username}}, function(item) {
return (item.get('username') === username);
}).then(function(results) {
return results.get('content')[0];
});
var userID = user.id;
var videos = this.store.filter('videos', {filters: {"creator":userID}}, function(item) {
return (item.get('creator.id') === userID);
});
return Ember.RSVP.hash({user: user, videos: videos});
}
});
在此配置中,userID
为空。
有一种简单的方法吗?我尝试使用afterModel
,beforeModel
和setupController
失败了。
答案 0 :(得分:1)
我想你想首先找到用户,然后找到他的视频。它可能看起来像这样
store.find("user", params.id).then(function(result) {
var promises;
promises = {
user: result,
videos: store.findQuery("video", {
video_id: result.get('id')
})
};
return Ember.RSVP.hash(promises);
});
这里我们通过id找到一个用户。一旦我们找到该用户,我们就会找到他们的视频并将其退回。