2015-10-03 21 views
6

Dopo aver fatto riferimento a questo Link, sto cercando di ottenere dati JSON nel mio servizio angolare.

Servizio:

.factory('restservice', ['$rootScope','$http', '$q', '$log', 
function($rootScope,$q, $http) { 
return { 
    getData: function() { 
     var defer = $q.defer(); 
     $http.get('xyz.com/abc.php', { cache: 'true'}) 
     .success(function(data) { 
      defer.resolve(data); 
     }); 

     return defer.promise; 
     } 
}; 
}]) 


Controller:

.controller('RestaurantsCtrl', function ($scope,$http, restservice,restViewservice){ 

     restservice.getData().then(function(data) { 
     $scope.Restaurants = data; 
    }); 

}) 


Dopo l'implementazione di questa console dice '$ q.defer non è un functi su '.

Qual è il problema qui? Per favore aiuto ...!! Sono nuovo di Angular Js quindi perdonare se qualcosa non va.

+0

Non si dovrebbe usare '$ q.defer', basta restituire' $ http.get (..) '. inoltre, 'success' è deprecato - usa' then' invece. –

+0

grazie per quello! :) –

+0

Una cosa così bella che le persone fanno le loro domande su Stackoverflow, sono sicuro che questa domanda e anche la risposta hanno risolto i problemi di molte persone. Grazie per questo – M98

risposta

21

Si hanno definizione di servizio errato:

factory('restservice', ['$rootScope','$http', '$q', '$log', 
function($rootScope,$q, $http) { 

dovrebbe essere:

factory('restservice', ['$rootScope','$http', '$q', '$log', 
function($rootScope,$http, $q, $log) { 

errore comune :)

+0

Grazie mille! È stato veloce ! lavorato ! Mi sento stupido per essere un noob in angolare ora. ho pensato che non importa. bene grazie –

+0

Ognuno fa questo tipo di errori, anche io, dopo 2 anni di angolare. Nessun problema :) –

+0

@Maxxim Shoustin puoi aiutarti con il cache. l'oggetto http get sopra non viene memorizzato nella cache. Sto usando js anulari per creare app con ionico. questo caching predefinito non funzionerà con le app mobili? –

0

abbiamo dovuto affrontare lo stesso errore e risolti ora:

Fare riferimento al file di versione angolare 1.6.1, poiché la versione precedente di angolare fornisce l'errore sopra riportato.