3

我有一个简单的应用程序,其中包含帖子评论

如果我在帖子中创建新评论并保存:Ember 的默认行为是将新评论作为 JSON 发布到“ /comment ”。

我喜欢将它发布到“ /posts/38/comment ”,并考虑覆盖特定模型的 RESTadapter 的 buildURL 方法来更改 URL。

但是 buildURL 方法签名只是(类型,id)。类型只是模型名称的字符串,未定义新评论的 id。

那么如何访问“待保存”模型的内容呢?或者是否有另一种流行的方式来获取 post-id 来构建 URL?在此示例中 - 如何访问 buildURL 中的数字 38。

还是我走错了路,有更好的存档方法吗?

4

1 回答 1

1

定义一个App.Comment特定的适配器,并在createRecord那里自定义方法:

App.CommentAdapter = DS.RESTAdapter.extend({
  createRecord: function(store, type, record) {
    var data = {};
    var serializer = store.serializerFor(type.typeKey);

    serializer.serializeIntoHash(data, type, record, { includeId: true });

    // Custom stuff
    var postId = record.get('post.id');
    var url = this.buildURL(type.typeKey, postId) + '/comment';
    return this.ajax(url, "POST", { data: data });
  }
});
于 2013-10-04T12:53:14.800 回答