Angular 返回未定义的服务不是函数

Angular service returning undefined is not a function

我在 Angular 控制器中有一个函数,如下所示:

app.controller("UsersController", ["$scope",  "UserList", function($scope, UserList) {

    $scope.createUserSubmit = function(newUser) {

      UserList.createUser().success(function(data){
        console.log(data);
      });

    }

}]);

当调用createUserSubmit()函数时,它调用另一个函数到服务UserList中的函数createUser()

服务如下所示:

app.service("UserList", function() {
  this.createUser = function(){
    console.log("doing it");
    return "hi";
  }
});

现在,当这一切运行时,我记录了 "doing it" 消息,但随后我收到以下错误并且 console.log(data) 没有记录。

TypeError: undefined is not a function

通常这种类型的错误是不言自明的,所以要么我是个白痴,要么发生了一些令人困惑的事情。据我所知,它是一个函数。

您没有从字符串 return 值(您是从您的方法 createUser 中 return 获取 success 方法。您将它作为 angular $httphttpPromise 的一部分获得。如果您实际上正在使用 http 进行 ajax 调用,只需 return $http 调用。

app.service("UserList", function($http) {
  this.createUser = function(){
    return $http('...');
  }
});

successerror 方法是添加到 httpPromise 的特殊功能,除了 $q promise 功能,它是对 $q promise 的扩展。

如果你正在寻找 return 数据 return 一个 $q 承诺,它有一个 then 方法,它等同于 success 方法。 $q 承诺没有 successerror 方法。

app.service("UserList", function($http) {
  this.createUser = function(){
    return $http('...').then(function(response){ 
             //Do your transformation and return the data
             return response.data;
           });
  }
});

UserList.createUser().then(function(data){
    console.log(data);
});