這是一個小衆情況,但我有一個簡單的聊天室風格的場景。如何附加到淘汰賽foreach中的現有元素,而不是創建新元素
所以會有一個可觀察的聊天條目數組(這可能會限制爲100個分頁以保持性能良好的條目)。
所以當前的foreach的樣子:
<!-- ko foreach: ChatEntries -->
<div class="chat-entry">
<img class="entry-sender"></span>
<span class="entry-content" data-bind="html: Content"></span>
</div>
<!-- /ko -->
而且目前每個條目,將添加一個新的聊天入口,這是很好的,看起來像這樣:
然而,有如果下一篇文章是由同一個人發佈的話,那麼現在就需要添加到現有的聊天記錄中,就像這樣(原諒可怕的繪畫作業)。
而且我不知道如何在淘汰賽做到這一點......我想,我可能做一個AfterRender階段,並檢查它是否是一樣的前一個條目海報然後刪除所有創建並找到以前的條目和使用jquery或東西只是追加元素,但這感覺非常黑客,即時通訊手動操縱dom。
那麼有沒有好的方法來解決這個問題?
== ==編輯
只是爲了澄清一些事情,目前我一直追加到,每當一個新條目來在觀察的陣列,但有是剛剛重新創建陣列的每一個參數時間會有新的東西出現,因爲這會簡化一些事情,但不確定這樣做的可見影響與僅追加單個條目的效果。
目前在截止點之後有50個緩衝區,所以主數組存儲大約100個,然後將允許另一個50%(最多150個入口),然後一旦它結束,它將切斷最後的50個入口並重新創建陣列,因此再次有100個條目,則用戶可以回頁面查看以前的條目。所以這減少了娛樂,但聽起來可能最終變得更復雜一些。所有進來的聊天記錄本地存儲在本地存儲中,因此無需服務器即可快速分頁,因此丟失了聊天數據。
創建'ko.computed'該工程對'ChatEntries'和人員的名字確實在groupping 。我已經在這裏回答了類似的問題:http://stackoverflow.com/questions/17882964/knockout-generate-for-an-array-of-15-items-3-sections-and-5-articles-for-each- se/17885378#17885378 – nemesv
所以,你知道,任何DOM操作都不會呈現,直到一個線程退出。所以除非你使用'setTimeout',這不會是一個問題。如果您在沒有正確轉換的情況下添加/刪除元素,則屏幕可能會閃爍。 – FakeRainBrigand