Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 返回未定义的角度服务不是函数_Javascript_Angularjs_Function_Angularjs Service_Angular Promise - Fatal编程技术网

Javascript 返回未定义的角度服务不是函数

Javascript 返回未定义的角度服务不是函数,javascript,angularjs,function,angularjs-service,angular-promise,Javascript,Angularjs,Function,Angularjs Service,Angular Promise,在角度控制器中有一个函数,如下所示: app.controller("UsersController", ["$scope", "UserList", function($scope, UserList) { $scope.createUserSubmit = function(newUser) { UserList.createUser().success(function(data){ console.log(data); });

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

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";
  }
});
现在,当这一切运行时,我会记录“Doyit”消息,但随后会出现以下错误,
console.log(data)
不会记录

TypeError: undefined is not a function

通常这类错误是不言自明的,所以要么我是个白痴,要么我有点困惑。就我所见,它是一个函数。

您不会从字符串返回值(您从方法
createUser
返回)中获得
success
方法。它是angular
$http
的一部分。如果您实际使用http进行ajax调用,只需返回
$http
call即可

app.service("UserList", function($http) {
  this.createUser = function(){
    return $http('...');
  }
});
success
error
方法是添加到httpPromise的特殊函数,除了$q promise函数之外,它是对
$q
promise的扩展

如果您希望返回数据,请返回一个
$q
承诺,它有一个
,然后返回一个与
成功
方法等效的
方法$q promise没有
成功
错误
方法

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


您不会从字符串返回值(您从方法
createUser
返回)中获得
success
方法。它是angular
$http
的一部分。如果您实际使用http进行ajax调用,只需返回
$http
call即可

app.service("UserList", function($http) {
  this.createUser = function(){
    return $http('...');
  }
});
success
error
方法是添加到httpPromise的特殊函数,除了$q promise函数之外,它是对
$q
promise的扩展

如果您希望返回数据,请返回一个
$q
承诺,它有一个
,然后返回一个与
成功
方法等效的
方法$q promise没有
成功
错误
方法

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


.success
不会从任何返回值自动变为可用,您需要为返回角度httpPromisethat@PSL谢谢上面的代码是缩写的,但实际上在
createUser()
函数中有一个对数据库的http调用。然后我返回该调用的数据。如果我不能执行
.success
,我如何使用返回的数据执行回调?
。success
不会从任何返回值自动变为可用,您需要为that@PSL谢谢上面的代码是缩写的,但实际上在
createUser()
函数中有一个对数据库的http调用。然后我返回该调用的数据。如果我不能执行
.success
,如何使用返回的数据执行回调?这很有意义。谢谢,这真的很有帮助。这很有道理。谢谢,这真的很有帮助。