2015-10-03 15 views
6

Nach Verweisung dieser Link, versuche ich, JSON-Daten in meinen eckigen Service zu bekommen.

Service:

.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; 
    }); 

}) 


Nach Umsetzung dieser Konsole sagt ‚$ q.defer kein functi ist auf '.

Was ist das Problem hier? Bitte helfen ... !! Bin neu bei Angular Js, also vergib, wenn etwas nicht stimmt.

+0

Sie sollten '$ q.defer' nicht verwenden, geben Sie einfach Ihre' $ http.get (..) 'zurück. Auch "Erfolg" ist veraltet - verwenden Sie stattdessen 'then'. –

+0

danke dafür! :) –

+0

So eine nette Sache, dass die Leute ihre Fragen zu Stackoverflow stellen, ich bin mir sicher, dass diese Frage und auch die Antwort viele Probleme der Leute gelöst haben. Danke für diese – M98

Antwort

21

Sie haben falsche Service-Definition:

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

werden sollten:

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

Häufiger Fehler :)

+0

Vielen Dank! Das war schnell ! hat funktioniert ! Ich fühle mich dumm, weil ich jetzt ein Noob bin. Ich dachte, das wäre egal. gut danke –

+0

Jeder macht diese Art von Fehlern, mich auch, nach 2 Jahren eckig. Keine Sorgen :) –

+0

@ Maxxim Shoustin können Sie mit Cache helfen. Das obige HTTP-get-Objekt wird nicht zwischengespeichert. Ich benutze anular js, um App mit ionic zu bauen. Dieses Standard-Caching funktioniert nicht in mobilen Apps? –

0

Wir haben den gleichen Fehler konfrontiert wird und jetzt gelöst:

Bitte beziehen Sie sich auf die eckige Version 1.6.1, da eine ältere Version von angular den obigen Fehler verursacht.