Bonjour !

J'ai commencé le developpement d'une application mobile à l'aide de ionic, dont le cours se trouve ici : http://www.grafikart.fr/tutoriels/cordova/ionic-framework-641

Comme vous le savez peut être, ionic utilise AngularJs, donc afin de récupérer des informations sur un serveur distant, j'ai creer un factory que voilà :

app.factory('ProjectFactory',function($http, $q){
        var factory = {
            projects : false,
            getProjets: function(){
                var deferred = $q.defer();

                $http.get('http://app.comandweb.org/api.php')
                    .success(function (data, status){
                        factory.projects = data;
                        deferred.resolve(factory.projects);
                    })
                    .error(function (data, status){
                        deferred.reject('Impossible de recupéré les article');
                    });

                console.log(factory.projects);
                return deferred.promise;
            },
            getProjet:function(id){
                return factory.projects[id];
            }
        };
        return factory;
});

Le soucis étant que si je lance ce factory dans une application purement AngularJs, celui ci fonctionne parfaitement.
Mais lorsque je l'utilise avec ionic, la modification de factory.projects n'est pas globale, si je fait un console.log(factory.projects) dans le success, j'ai bien mes infos, mais si je le fait comme dans le code, en dehors du success, la variable n'a pas été modifié.

Je suis débutant en AngularJs, il doit surment avoir la possibilité de contourné ce problème..

Quelqu'un aurait une idée ?

Merci d'avance,
Cordialement
Sebastien

EDIT :

Bon, j'ai su me débrouiller mes la solution ne me plait pas vraiment..

Voici le code :

app.factory('ProjectFactory',function($http, $q){
        var factory = {
            projects : false,
            getProjets: function(){
                var deferred = $q.defer();

                 $http.get('http://app.comandweb.org/api.php')
                    .success(function (data, status){
                        deferred.resolve(data);
                    })
                    .error(function (data, status){
                        deferred.reject('Impossible de recupéré les article');
                    });

                return deferred.promise;
            },
            getProjet:function(id){
                return factory.projects[id];
            },
            setProjets:function(value){
                factory.projects = value;
            }
        };
        return factory;
});

app.controller('homeCtrl', function($scope, ProjectFactory) {
    $scope.projects = {};
    ProjectFactory.getProjets().then(function(value){
        $scope.projects = value;
        ProjectFactory.setProjets($scope.projects);
    });
});

app.controller('projectCtrl', function($scope, ProjectFactory, $stateParams) {
    $scope.data = {
        showDelete: false
    };
    $scope.project = ProjectFactory.getProjet($stateParams.id);
});

J'ai ajouter une fonction setProjets dans le factory, ce qui me permet de modifier la variable comme je le souhaite.

Aucune réponse