2015-07-14 2 views
0

J'ai des données stockées dans une base de données nosql que je vois quand j'accède à localhost: 3000/pays.Récupérer des données json en utilisant GET dans angularjs

J'essaie d'utiliser cette usine afin d'obtenir les données qui sont en json.

.factory('countries', ['$http', '$q', 
    function($http, $q) { 


    var countries = { 
       get: function() { 
        return $q(function(resolve, reject) { 
         $http({ 
          method: 'GET', 
          url: '/countries' 
         }).then(function(response) { 

          resolve(response.data); 
         }, function(error) { 

          reject(error); 
         }); 
        }); 
       }; 

    return countries; 
    } 
]); 

Et puis je suis d'essayer d'utiliser ce contrôleur pour envoyer ces données à l'URL appropriée à afficher, mais il ne fonctionne pas comme je m'y attendais à.

.controller('CountriesCtrl', function($scope, countries) { 
    console.log(countries); 
    countries.get(function(countries) { 
     $scope.countries = countries; 
    }); 
}) 

Des idées ou des suggestions? Merci!

+1

Vous devez injecter votre service de l'usine nouvellement créée, à savoir _devices_ –

+0

Si vous utilisez [ui-routeur] (https://github.com/angular-ui/ui-router/wiki#resolve) résoudre pour fournir à votre contrôleur du contenu ou des données qui sont personnalisés à l'état. Dans la fonction de résolution, utilisez le service décrit par @Alex, puis à l'intérieur du contrôleur, vous n'aurez qu'à injecter le nom de la résolution et les données sont prêtes à être utilisées. – tomepejo

Répondre

0

C'est ce que j'utilise actuellement dans mon projet qui utilise MongoDB

cmsApp.factory("tasks", ["$resource", function($resource) { 
    return $resource("/tasks/", {}, { 
    save: { 
     method: 'POST', 
     isArray: true 
    }, 
    'delete': { 
     method: 'DELETE', 
     isArray: true 
    } 
    }); 
}]); 

Ensuite, dans le contrôleur (assurez-vous d'injecter au contrôleur!):

$scope.tasks = tasks.query(); 

.query() sélectionne toutes les données en .get() obtient par Id

0

Vous devez injecter votre usine dans votre contrôleur, quelque chose comme ceci:

.controller('CountriesCtrl', function($scope, devices) { 
    console.log(countries); 
    countries.get(function(data) { 
     $scope.data = data; 
    }); 
}) 
0

Vous devez injecter des 'devices' de service au lieu de la variable interne 'pays'.

.controller('CountriesCtrl', function($scope, devices) { 
    console.log(devices); 
    devices.get().then(function(countries) { 
     $scope.countries = countries; 
    }); 
}); 
+0

Désolé, ça aurait dû être des pays. Erreur lors de la publication. – tryingtolearn

+0

Ok, avez-vous essayé mon extrait de code avec 'countries' au lieu de 'devices'? Quels journaux ou résultats voyez-vous et qu'attendez-vous? – Alex