2

在尝试模拟新闻源的应用程序中,我有以下三个模型。

  1. Feed - {名称:字符串,帖子:hasmany(帖子模型)}
  2. 发布 - {文本:字符串,评论:hasmany(评论模型),提要:belongsto(提要模型)}
  3. 评论 - {text:string, post:belongsto(Post model)}

所有三个模型都有单独的 Rest API 用于检索有效负载。我需要能够检索数据并将它们显示在单个路由资源下。

http://emberjs.com/guides/models/the-rest-adapter/上的 RestAdapter 文档 说

可以通过 post.get('comments') 加载帖子的评论。REST 适配器将向 /comments?ids[]=1&ids[]=2&ids[]=3 发送 GET 请求。

下面的代码显示了我如何尝试做同样的事情,但我无法检索 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 来模拟​​ rest 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

    }]
 }

关于我可能在这里遗漏的任何指示?

4

0 回答 0