Hello les devs,
Voila je rencontre un petit problème avec mon code.

Ce que je fais

J'ai développe une solution avec un Back Symfony et un front angular JS. Mon back charge un XML via une URL donnée par l'utilisateur, hydrate une entité SF avec ces données et renvoi une response JSON.

Mon front fait un GET lors d'un click, recupere ces données et affiche tout quand celles ci sont chargés.

Mon action back Symfony

public function apiAction(Request $request)
    {
        $myurl = $request->query->get('url');
        $myJsonDatas = $this->get('my.service.parse.xmltoobject')->parse($myurl);

        return new Response(
            $myJsonDatas, 200, ['Content-Type' => 'application/json']
        );
    } 

Mon front angular

var myApp = angular.module('myApp', []);

myApp.factory('ajaxService', function($http) {
    return {
        getMyDatas: function(urlToFetch) {

            return $http.get(Routing.generate('myroute', { url: urlToFetch}))
                .then(function(res) {
                    return res.data;
                });
        }
    }
});

myApp.controller('myController', function($scope, ajaxService) {
    $scope.getDatasAPI = function() {
        var myUrl = $('.url_input');
        var urlToFetch = myUrl.val();
            ajaxService.getMyDatas(urlToFetch).then(function (products) {
                $scope.products = products;
            });
    };
});

Ce que je veux

Problème : J'ai testé avec 10000 données et l'app a crashé...

Ainsi, je souhaite maintenant afficher mes datas au fur et a mesure que les données sont chargés. Au lieu de tout récuperer et d'affiche tout en meme temps à la fin, j'aimerais afficher mes données dès qu'elles sont chargés, et quelles aparaissent au compte goute.

Mais je n'ai pas idée de comment faire (jamais fait).

Ce que j'obtiens

Actuellement, ma solution est fonctionelle mais pas pour un énorme nombre de données, je cherche ainsi une solution pour afficher ces données en real time au fur et a mesure.

Merci.

4 réponses


Salut,

Oriente-toi vers du lazy loading.
Voici un exemple trouvé sur Codepen : http://codepen.io/zachwills/pen/dPOoZO

Perso je ferais une pagination, je chargerais les éléments au fur et à mesure du scroll :)

Merci les gars !

Par pagination, tu entends envoyer 100 datas par request ainsi que le count($datas), incrémenter l'index a chaque fois coté back ?

C'est ça, côté front tu calcul le nbre de page et tu demande au serveur une certaine page en fonction de ce que tu veux