AngularJS 错误:无法读取未定义的属性“get”

AngularJS error: Cannot read property 'get' of undefined

本文关键字:属性 get 未定义 读取 错误 AngularJS      更新时间:2023-09-26

我是AngularJS的新手,正在尝试通过$http.get请求检索变量。我已经设置了类似于我看到的几个示例的代码,并且无法弄清楚为什么我会收到"无法读取未定义的属性'get'"错误消息。我在这个网站上发现了类似的问题,但它们都指出了各种格式问题。我找不到,所以我希望有人能够指出我做错了什么。以下是我正在使用$http的服务。

(function () {
angular
    .module('golfleague.player')
    .factory('PlayerService', ['$http', function($http){
        var onError = function(data) {
            data.errors = data;
        };
        function getLastName($http) {
            return $http.get('/player/lastname').then(onFetchLastNameComplete, onError);
            function onFetchLastNameComplete(response) {
                return response;
            }
        }
        return {
            getLastName: getLastName
        };
    }]);
})();

你有$http依赖项作为PlayerServicegetLastName函数参数中的参数,并且你想使用注入的服务依赖$http。因此,在调用getLastName函数时,其参数值$http它优先于当前局部函数变量并杀死PlayerService $http服务的存在。由于现在$http方法未定义,您将不会在其中定义get方法,这就是您收到错误的原因。

通过从getLastName函数参数中删除$http将解决您的问题。

function getLastName() { //<--removed $http from here
    return $http.get('/player/lastname').then(onFetchLastNameComplete, onError);
     function onFetchLastNameComplete(response) {
            return response;
     }
 }