Angularjs ng-repeat连接记录

时间:2013-08-27 06:18:54

标签: javascript jquery angularjs

我希望找到实现以下目标的最佳方法(Angular方式): 我有一个包含消息列表的数组,每个消息包含作者的名称,文本以及写入时的时间戳。 每条消息都在表格中绘制,但是消息可以堆叠在一起,如下所示:

  • 当前消息的作者与前一个消息相同
  • 上一个表格行的高度不超过给定的限制高度(即总可用高度的40%)。

布局看起来像这样:

message = { author: 'x', message: 'Hello World', timeStamp: new Date() }

table
tbody
    tr( data-ng-repeat = 'message in conversation.messages | parseMessage')
        td.self
            div.messageAuthorProfile( style = 'background-image: url(/pictures/{{ message.author | parseAuthorEmail }}/profile/0.jpg)')
                div.conversation
                    label.messageAuthorName {{ message.author | parseAuthorName }}
                    div.message
                        div.conversationTimeStamp
                            span {{ message.timeStamp | parseTimeStamp }}
                        div.conversationMessage
                            p {{ message.message }}

通过获取表的最后一个元素,检查其高度并在满足条件时附加消息,使用jquery可以“轻松”实现这一点,但是我很难在纯Angular.js解决方案中实现此功能。

有没有人能给我一些有关实现这个目标的可能方法的见解?

最诚挚的问候和感谢阅读!

免责声明:我只开始使用angular.js大约一个星期,所以我目前正在学习将几个项目100%jquery移植到角度,但是在研究和检查在线文档后我无法想出实现这一目标的“干净方式”。

1 个答案:

答案 0 :(得分:0)

考虑这一点的最佳方法是考虑如何使用数组数据执行此操作,然后让您的视图反映数据。

因此,如果我理解你的问题,你就是试图通过作者对行进行分组 我倾向于使用underscore.js进行数组操作(这非常好) http://underscorejs.org/#groupBy

它将由作者对您的数据进行分组 然后在你的角度视图中,有2 ng重复。您的组的外部ng-repeat,以及消息和时间戳的内部 这将显示为每位作者列出的消息和时间戳。