Angular Js:“$q.defer 不是函数”错误

Angular Js : '$q.defer is not a function' error

参考这个 Link 之后,我试图将 JSON 数据输入到我的 angular 服务中。

服务:

.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('RestaurantsCtrl', function ($scope,$http, restservice,restViewservice){

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

})


实施此控制台后说 '$q.defer 不是函数'.

这里有什么问题?请帮忙 ...!!我是 Angular Js 的新手,如有不妥请见谅。

您的服务定义有误:

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

应该是:

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

常见错误:)

我们遇到了同样的错误,现在解决了:

请参考angular1.6.1版本文件,因为旧版本angular会出现上述错误。