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
,如何使用返回的数据执行回调?这很有意义。谢谢,这真的很有帮助。这很有道理。谢谢,这真的很有帮助。