ニュースフィードをシミュレートしようとしているアプリケーションには、次の 3 つのモデルがあります。
- フィード - {name:string, posts:hasmany(Post model)}
- 投稿 - {text:string, comments:hasmany(コメント モデル), feed:belongsto(フィード モデル)}
- コメント - {text:string, post:belongsto(Post model)}
3 つのモデルすべてに、ペイロードを取得するための個別の Rest Api があります。データを取得して、単一のルート リソースの下に表示できるようにする必要があります。
http://emberjs.com/guides/models/the-rest-adapter/の RestAdapter ドキュメントに は、
投稿のコメントは、post.get('comments') で読み込むことができます。REST アダプターは、GET 要求を /comments?ids[]=1&ids[]=2&ids[]=3 に送信します。
以下のコードは、同じことをしようとしている方法を示していますが、Feed モデルのすべてのデータを取得できません。
var Newsfeed = Ember.Application.create();
Newsfeed.Router.map(function(){
this.route('feed', {path:'/'});
});
Newsfeed.FeedRoute = Ember.Route.extend({
model: function(){
var model = Newsfeed.Feed.find(1);
//model.set('posts', Newsfeed.Post.find()); -- This also did not work.
//posts.set('comments', Newsfeed.Comment.find());
return model;
},
setupController: function(controller, model){
controller.set('content', model);
controller.set('content.posts', model.get('posts'));
console.log(controller.get('content.posts'));
this.controllerFor('posts').set('content', model.get('posts'));
}
});
Newsfeed.PostsView = Ember.View.extend({
});
Newsfeed.PostsController = Ember.ArrayController.extend({
});
Newsfeed.FeedController = Ember.Controller.extend({
});
Newsfeed.Store = DS.Store.extend({
revision:12,
adapter: 'DS.RESTAdapter'
});
Newsfeed.Feed = DS.Model.extend({
name:DS.attr('string'),
posts:DS.hasMany('Newsfeed.Post')
});
Newsfeed.Post = DS.Model.extend({
text : DS.attr('string'),
comments:DS.hasMany('Newsfeed.Comment'),
feed:DS.belongsTo('Newsfeed.Feed')
});
Newsfeed.Comment = DS.Model.extend({
text: DS.attr('string'),
post:DS.belongsTo('Newsfeed.Post')
});
jquery.mockjax を使用して残りの API をシミュレートしています。私のペイロードは-
{ "feed" :{
id:1,
name:"Ember Web App",
posts :[1,2]
}
}
{"posts" : [{
id:1,
text:"orem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempo",
comment_ids:[1],
feed_id:1
},{
id:2,
text:"orem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempo",
comments:[2],
feed_id:1
}]
}
ここで見逃している可能性があるものについての指針はありますか?