J'ai un énorme ensemble de données de plusieurs milliers de lignes avec environ 10 champs chacune, soit environ 2 Mo de données. J'ai besoin de les afficher dans le navigateur. L'approche la plus simple (récupérer les données, les mettre dans un fichier de type $scope
laissons ng-repeat=""
faire son travail) fonctionne bien, mais il bloque le navigateur pendant environ une demi-minute lorsqu'il commence à insérer des nœuds dans le DOM. Comment dois-je aborder ce problème ?
Une option consiste à ajouter des lignes à $scope
de manière incrémentielle et attendre que ngRepeat
pour finir d'insérer un morceau dans le DOM avant de passer au suivant. Mais, pour l'instant, ngRepeat ne signale pas quand il a fini de "répéter", donc ça va être moche.
L'autre option consiste à diviser les données sur le serveur en pages et à les récupérer en plusieurs requêtes, mais c'est encore plus laid.
J'ai parcouru la documentation d'Angular à la recherche de quelque chose comme ng-repeat="data in dataset" ng-repeat-steps="500"
mais je n'ai rien trouvé. Je suis assez nouveau dans les méthodes Angular, il est donc possible que je manque complètement le point. Quelles sont les meilleures pratiques en la matière ?
10 votes
Voulez-vous vraiment afficher TOUTES les lignes ? Pourquoi ne pas afficher seulement le nombre de lignes que l'utilisateur peut voir ? Par exemple, vous pourriez utiliser
limitTo
pour afficher seulement 20 éléments :<p ng-repeat="data in dataset | limitTo:20">{{data}}</p>
Cela ne montre que 20 articles. Vous pourriez alors utiliser des pages et afficher les 10 éléments suivants ou quelque chose du genre :)0 votes
Pour ce qui est de "rapporter quand il a fini de se répéter", vous pouvez utiliser une directive personnalisée en plus de ng-repeat. (voir ici la réponse sélectionnée) stackoverflow.com/questions/13471129/
0 votes
Référez-vous à cette question, elle vous aidera sûrement. [entrer la description du lien ici] [1] [1] : stackoverflow.com/questions/25481021/