首页 > 解决方案 > 获取 TypeError:XYZ 不是 Angular 中的函数

问题描述

我经历了几个问题并试图解决这个问题,但还没有成功。我收到此错误:

类型错误:appService.load_All_EV 不是函数。

我使用相同的方式从其他控制器中的服务调用数据并且它工作正常。这是我的服务

app.factory("appService", function($http) {
    return {
        GetApp: function() {
            return $http({ method: 'GET', url: '', headers: { 'Content-Type': 'application/json' } }).then(function(response) {
                return response.data;
            });
        },
        load_All_EV: function() {
            return $http({ method: 'GET', url: '', headers: { 'Content-Type': 'application/json' } }).then(function(response) {
                return response.data;
            });
        }
        }
})

还有我的控制器:-

app.controller('getActEvCtrl', ['$scope','$http','appService','$localStorage','$timeout','growl', function ($scope,$http,appService,$localStorage,growl,$timeout) {

            $scope.loadev = appService.load_All_EV();
            $scope.loadev.then(function(data) {

            angular.forEach(data, function(value) {
            $scope.getallEv = data;
            console.log(value);
            });
            });
}]);

我哪里错了?

标签: angularjsservicecontrollertypeerror

解决方案


请注意,您在 appService 中处理了 $http 承诺(您使用“then”),并且您没有将承诺传回给控制器,因此您可能会在线收到错误:“$scope.loadev.then” . 如果您不在那里处理承诺,请从服务中删除“then”(也是一种很好的做法)。

在 appService 中,它应该如下所示:

load_All_EV: function() {
            return $http({ method: 'GET', url: '', headers: { 'Content-Type': 'application/json' } })
}


推荐阅读