将项目推入AngularJS的嵌套集合中

埃夫

我正在使用Rails gem gems_as_commentable_with_threading。效果很好。

我还在前端使用AngularJS。我有一个控制器,该控制器返回以下JSON以呈现要注释的内容:

[
   {
      "comment":{
         "id":1,
         "commentable_id":1,
         "commentable_type":"Post",
         "title":null,
         "body":"This is a very cool comment!",
         "subject":null,
         "user_id":5,
         "parent_id":null,
         "lft":1,
         "rgt":4,
         "created_at":"2016-12-16 03:50:24",
         "updated_at":"2016-12-16 03:51:24"
      },
      "children":[
         {
            "comment":{
               "id":2,
               "commentable_id":1,
               "commentable_type":"Post",
               "title":null,
               "body":"I definitely think this is cool too.",
               "subject":null,
               "user_id":7,
               "parent_id":null,
               "lft":2,
               "rgt":3,
               "created_at":"2016-12-16 03:51:06",
               "updated_at":"2016-12-16 03:51:24"
            },
            "children":[

            ]
         }
      ]
   }
]

如果有人选择回复ID为2的评论,则意味着新创建的评论将插入到children所述评论数组中。有没有用角度做到这一点的方法?还是我基本上会编写自己的递归函数,该函数循环遍历每个注释及其子对象,直到找到具有相同ID的注释对象并将新注释推入children数组中?

原因是我将通过websocket发送的单个评论发送给网站上的其他用户。

MichałKolenda

您可以将地图维护为注释嵌套数组的平面版本。您将需要递归地循环注释数组并将所有元素添加到地图(一次,在渲染注释之前)。

例如:

function addCommentsToMap(comments, commentsMap ) {
    comments.forEach(function(comment) {
        commentsMap[comment.id] = comment;
        addCommentsToMap(comment.children, commentsMap );
    });
}

var commentsMap = {};
addCommentsToMap(comments, commentsMap);

具有这样的映射使得仅需一个操作就可以插入注释。当有新评论时,您可以简单地输入:

commentsMap[parentCommentId ].children.push(newComment);

之后,newComment将出现在您的递归数组中,因为它由与地图相同的对象组成。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将增量项目推入Angularjs中的数组

来自分类Dev

仅当没有项目与今天的日期匹配时才将项目推入数组中-AngularJS

来自分类Dev

如何将新项目推入immutableJS的深层嵌套记录中

来自分类Dev

将项目推入JavaScript中的数组

来自分类Dev

如何将嵌套的Java集合中的所有项目展平为单个List?

来自分类Dev

如何将项目推入数组中对象的数组中

来自分类Dev

将项目推入JavaScript中的多维树状结构

来自分类Dev

如何将项目推入useState数组中的对象数组?

来自分类Dev

将项目推入Mongoid数组

来自分类Dev

如何将文本从html输入推入AngularJS数组中?

来自分类Dev

从 Lodash 中的 JSON 中的多个嵌套集合中提取项目

来自分类Dev

访问angularJS嵌套列表中的项目

来自分类Dev

提取嵌套集合中包含项目的项目构成另一个集合

来自分类Dev

删除第N级嵌套集合中的项目

来自分类Dev

如何从集合中获取所有嵌套项目?

来自分类Dev

模型没有被推入osteojs的集合中

来自分类Dev

角度:将数据推入嵌套数组

来自分类Dev

将数组推入嵌套数组JavaScript

来自分类Dev

将值推入嵌套的ko.observableArray

来自分类Dev

将嵌套标记值推入PHP数组

来自分类Dev

将新字段推入嵌套数组

来自分类Dev

如何使用MongoDB C#将新对象插入(推入)嵌套数组中?

来自分类Dev

如何使用MongoDB C#将新对象插入(推入)嵌套数组中?

来自分类Dev

将现有项目推入裸仓库

来自分类Dev

将项目推入数组的最佳性能方式?

来自分类Dev

如何将json项目推入数组?

来自分类Dev

将现有项目推入裸仓库

来自分类Dev

将项目推入空的 State 对象数组

来自分类Dev

使用AngularJS将值推入数组

Related 相关文章

热门标签

归档