Abbiamo un'applicazione di chat. Per mostrare la cronologia della chat stiamo usando ng-repeat. quando il numero di record nella cronologia è superiore a 100, non vi è alcun ritardo nella digitazione nella casella di testo del nuovo messaggio. Quando digito qualcosa nella casella di testo ci vogliono da 0,5 a 1 secondi per visualizzare quel carattere nella casella di testo. Questo ritardo non si verifica quando il numero di record in ng-repeat di meno.
Come risolvere questo problema?
risposte:
1 per risposta № 1Non usare ng-repeat
per la cronologia chat, perché Angular mantiene gli osservatori in ogni riga ng-repeat
. Puoi anche provare i collegamenti una tantum in ng-repeat
e track by
, ma raccomanderei la manipolazione DOM vecchio stile nel widget della cronologia. Dato che la cronologia è di solito una cosa immutabile, non ha senso metterla sotto il controllo di Angularjs.
0 per risposta № 2
Ovviamente è un problema di prestazioni ng-repeat. Puoi superarlo usando "track by".
<div ng-repeat="item in items track by $index"></div>