0

以下を達成するための最良のアプローチ(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 を使い始めて約 1 週間しか経っていないので、現在、100% jquery ベースの 2 つのプロジェクトを angular に移植することで学習していますが、オンライン ドキュメントを調査して確認した後、「クリーンなこれを達成する方法。

4

1 に答える 1

0

これを考える最善の方法は、配列データでこれを行う方法を考えてから、ビューにデータを反映させることです。

したがって、私があなたの質問を理解している場合は、著者ごとに行をグループ化しようとしています。
私は配列操作にunderscore.jsを使用する傾向があります(それは非常に良いです) http://underscorejs.org/#groupBy

作成者ごとにデータをグループ化します。
次に、角度ビューで、2 つの ng-repeat を作成します。グループの外側の ng-repeat と、メッセージとタイムスタンプの内側です。
これにより、各作成者のメッセージとタイムスタンプが表示されます。

于 2013-08-27T06:44:36.737 に答える