2

我有一组评论和一组帖子。

App.Router.map(function () {
  this.resource("posts", {
    path: "/posts"
  });
  this.resource("post", {
    path: "/:post_id"
  }, function () {
    this.resource("comments", {
      path: "/comments"
    });
  });
});
App.Post = Ember.Model.extend({
  id: attr(),
  name: attr(),
  comments: Ember.hasMany("App.Comment", {
    key: 'comments'
  })
  if embedded = comments: Ember.hasMany("App.Comment", {
    key: 'comments',
    embedded: true
  })
});
App.Post.url = "/posts";
App.Comment = Ember.Model.extend({
  id: attr(),
  message: attr(),
  post: Ember.belongsTo('App.Post', {
    key: 'post'
  })
});

我怎么能:

  1. 创建一个新的嵌入式评论。
  2. 创建一个非嵌入式评论并将该创建添加comment_idcomment_ids: []Post 模型中。

如果未嵌入,我可以post_id进入评论,但很难将comment_id添加到帖子中。

4

3 回答 3

1

使用create()方法。

// get a post instance to insert a new comment to.
var post = App.Post.create(); // or App.Post.find()

// insert a new comment.
var comment = post.get('comments').create();
comment.message = "Test Poster";

// since you are using embedded relationship,
// no need to save the comment, just save the post.
post.save();

如果您使用的是非嵌入式评论,请将您的关系更改为{ embedded: false },只是不要忘记在您的评论上调用 save 。

// if non-embedded
comment.save();

希望能帮助到你!

于 2013-09-16T00:47:14.797 回答
0

你要pushcommentcomments收藏就行了post

var post = this.get('post');
var comments = post.get('comments');
comments.pushObject(comment);
comment.save();
post.save();

这是一个具有总体思路的 JSBin:http: //jsbin.com/OnUXEti/12/edit

于 2013-09-15T04:43:53.363 回答
0

万一这对任何人都有帮助——我在 ember-model 上提出了拉取请求,该请求修复了 github 上的拉取请求差异问题

于 2014-01-15T15:17:36.240 回答