【问题标题】:TypeError: $http.get is not a function in Angular JSTypeError: $http.get 不是 Angular JS 中的函数
【发布时间】:2016-10-02 02:51:27
【问题描述】:

我正在尝试使用 Angular 服务,因为 $scope 不能被注入到服务内部,所以使用 $rootScope。我的代码看起来不错,但出现以下错误-

TypeError: $http.get 不是函数

这是代码- EmployeeService.js: ///

app.factory('fetchEmpService', ['$rootScope', '$http', function ($http, $rootScope) {
    var employees = [];
    return {
        fetchEmp: function () {
            debugger;
            return $http.get("EmpWebService.asmx/GetEmp")
                .then(function (response) {
                    employees = response.data;
                    $rootScope.$broadcast('allEmployees', employees);
                    return employees;
                });
        }

    };
}]);

在我的控制器中,我尝试如下使用它:

$scope.employees = fetchEmpService.fetchEmp();
$scope.$on('allEmployees', function (events, employees) {
        $scope.employees = employees;
    });

我有点困惑,数据会进入 $scope.$on

【问题讨论】:

  • 您的参数顺序错误。 $rootScope 先注入。交换它们,应该没问题
  • 更改此行中的答案app.factory('fetchEmpService', ['$rootScope', '$http', function ($http, $rootScope)。这里注入顺序很重要。 app.factory('fetchEmpService', ['$rootScope', '$http', function ($rootScope, $http)

标签: angularjs


【解决方案1】:

您的参数和注射剂数组的顺序不同。

这个:

app.factory('fetchEmpService', ['$rootScope', '$http', function ($http, $rootScope)

需要

app.factory('fetchEmpService', ['$rootScope', '$http', function ($rootScope, $http)

顺序很重要,需要一致。

更多关于dependency injection的信息。

【讨论】:

  • 正确,我就是这个原因。谢谢
  • @RiteshGupta 没问题。请记住,如果这是正确答案,请将其标记为正确,以便其他人将来可以看到。
  • 好的,标记为正确答案。但是我的第二个问题仍然悬而未决,这行 $rootScope.$broadcast('allEmployees', employees); 的作用是什么?我评论了,代码仍然可以正常工作。
  • @RiteshGupta 这是一个单独的问题,所以你应该再发一个帖子。不过,在您这样做之前,请查看Angular scope。尤其是$broadcast$on 部分。
猜你喜欢
  • 1970-01-01
  • 2016-07-11
  • 2023-03-28
  • 2016-06-19
  • 2018-11-30
  • 1970-01-01
  • 2017-12-20
  • 2017-07-19
  • 2020-12-23
相关资源
最近更新 更多