Ich habe Leistungsprobleme bei der Verwendung von ng-repeat
für lange Listen (Tausende von Datensätzen), die innerhalb einer Tabelle angezeigt werden müssen. Hierng-repeat zeigt schreckliche Leistung mit großen Listen
ist die HTML Ich verwende:
<table class="table table-hover">
<thead>
<tr>
<th ng-repeat="One_Header in Data_List.Header track by $index">{{One_Header}}</th>
</tr>
</thead>
<tbody>
<tr ng-model="Data_List" ng-repeat="One_Source in Data_List.Body track by $index" style="cursor:pointer">
<td ng-repeat="One_Data_Field in One_Source track by $index">{{One_Data_Field}}</td>
</tr>
</tbody>
</table>
Die JSON erhalten (dauert ca. 1 Sekunde vom Server zu erhalten) enthält die Daten wie folgt:
"Data":{
"Header":["Title_1","Title_2","Title_3"],
"Body":[
["Rec_1_Data_1","Rec_1_Data_2","Rec_1_Data_3"],
["Rec_2_Data_1","Rec_2_Data_2","Rec_2_Data_3"],
["Rec_3_Data_1","Rec_3_Data_2","Rec_3_Data_3"],
:
["Rec_n_Data_1","Rec_n_Data_2","Rec_n_Data_3"]
]
}
ich auch versuchte eine einseitige Bindung (dh {{::One_Data_Field}}
) ohne irgendeine merkliche Verbesserung.
Wie oben erwähnt, kommt die Antwort innerhalb einer Sekunde an und es dauert bis zu 10 Sekunden, bis die Tabelle erstellt ist.
Jeder Vorschlag wird sehr geschätzt.
Paginierung + lazy loading/endlos scrollen sind deine Freunde hier. – Fissio
Sie können versuchen, vs-Wiederholung zu verwenden. https://github.com/kamilkp/angular-vs-repeat –
Vielen Dank für Ihre Vorschläge. Leider bin ich ziemlich beschränkt auf die Anzahl der Bibliotheken, die ich in mein Projekt aufnehmen kann (Firmenpolitik ... frag nicht ...) und muss das irgendwie mit einem anderen Ansatz angehen. Ich dachte eher über etwas wie das Folgende nach: Zeige die ersten 100 Datensätze in die Tabelle, rende und füge Chunks in den Hintergrund ein (was natürlich zu einem erneuten Rendern führen wird, also bin ich mir nicht sicher, ob das so ist eine gute Idee überhaupt). – FDavidov