我使用Backbone和Rails实现嵌套注释。我在服务器端的当前实现涉及存储parent_comment_id
的注释模型(假设它们有一个)。当应用程序请求给定实体的注释时,我返回一个JSON对象,其中键是parent_comment_id
,值是具有该id的父注释的注释数组。 E.g:
{
"" : [{id: 1, content: "I'm an unnested comment, parent_comment_id: ""}],
1 : [{id: 2, content: "I am nested under the comment with an id of 1", parent_comment_id: 1}, etc.],
...
}
我目前遇到的问题是与Comments对应的Backbone集合返回一个长度为1的数组,其中唯一的元素是注释哈希。
如何通过Comments集合覆盖JSON响应的解析,以便返回的响应是JSON响应哈希而不是数组?
答案 0 :(得分:1)
您可以覆盖collection.parse方法
答案 1 :(得分:0)
经过一些进一步的考虑,我认为最好的做法是将评论哈希的构造卸载到客户端。通过这样做,我可以继续将集合解析为预期的对象数组,然后通过在集合上调用以下方法来构建散列:
Jot.Collections.Comments = Backbone.Collection.extend({
...
commentsByParent: function() {
var commentsHash = {},
key;
this.models.forEach(function(c) {
key = c.get('parent_comment_id');
commentsHash[key] = commentsHash[key] || [];
commentsHash[key].push(c);
});
return commentsHash;
}
});