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

时间:2015-10-03 14:25:26

标签: angularjs q angular-promise angular-services

在引用此Link之后,我试图将JSON数据放入我的角度服务中。

服务

.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的新手,请原谅。

2 个答案:

答案 0 :(得分:22)

您的服务定义错误:

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

应该是:

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

常见错误:)

答案 1 :(得分:0)

我们遇到了同样的错误并立即解决了:

请参考角度1.6.1版本文件,因为较旧版本的角度会出现上述错误。