2017-04-24 61 views
-1

所以我想達到的目標是:角1.6 - NG-重複排序依據和GROUPBY項目

  • 遍歷消息陣列(NG-重複)按日期
  • 排序消息
  • 然後如果作者匹配(存儲在同一個div元素中)
  • 如果當前消息的作者與前一個作者不匹配,則創建新的div
  • 繼續循環

我被困在這裏:

<div class="message" ng-repeat="msg in chatDetails.msgList"> 
    <p>{{ msg.text }}</p> 
</div> 

我需要保持精確的順序 - 簡單地說,如果前一個元素不與電流的匹配 - 新箱應創建。

這是甚至可能在角?如果是這樣,你能告訴我怎麼樣?

謝謝!

編輯

繼承人的chatDetails樣品結果:

{ 
    msgList: [ 
     { author: 0, text: 'hi', date: 1493050181799 }, 
     { author: 1, text: 'hola!', date: 1493050181801 }, 
     { author: 1, text: 'wilkomen', date: 1493050181802 }, 
     { author: 0, text: 'czesc', date: 1493050181803 } 
     { author: 0, text: 'ciao', date: 1493050181804 } 
     { author: 1, text: 'bonjour', date: 1493050181805 } 
    ] 
    } 

不知何故期望的結果:

<div class="message-list"> 
    <div class="message-group" data-author="1"> 
    <div class="message"> 
     <p>hola</p> 
    </div> 
    <div class="message"> 
     <p>ciao</p> 
    </div> 
    </div> 
    <div class="message-group" data-author="0"> 
    <div class="message"> 
     <p>hola</p> 
    </div> 
    </div> 
    <div class="message-group" data-author="1"> 
    <div class="message"> 
     <p>hola</p> 
    </div> 
    <div class="message"> 
     <p>hola</p> 
    </div> 
    </div> 
</div> 
+0

你是否將'chatDetails'傳遞給控制器​​? 你可以通過添加下面的html'

{{ chatDetails }}
'來檢查(在郵件上面) –

+0

@DenisTsoi'chatDetails'是範圍變量。在這種情況下由指令創建。 –

+0

啊對不起 - 我沒有閱讀整個信息 - 所以你只是爲了解決問題的'group by'部分。也許'groupBy'過濾器可能會有所幫助。 –

回答

-1

我相信你的問題可以用 「排序依據」 來解決。

https://docs.angularjs.org/api/ng/filter/orderBy

它看起來是這樣的:

<div class="message" ng-repeat="msg in chatDetails.msgList | orderBy: 'date'"> 
    <p>{{ msg.text }}</p> 
</div> 

如果MSG的對象有一定的日期或索引值,您可以通過數字進行排序。

+0

嗨。這隻會解決順序,但不會幫助分組。但是,無論如何謝謝你! –