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 $http
的 httpPromise 的一部分获得。如果您实际上正在使用 http 进行 ajax 调用,只需 return $http
调用。
app.service("UserList", function($http) {
this.createUser = function(){
return $http('...');
}
});
success
和 error
方法是添加到 httpPromise 的特殊功能,除了 $q promise 功能,它是对 $q
promise 的扩展。
如果你正在寻找 return 数据 return 一个 $q
承诺,它有一个 then
方法,它等同于 success
方法。 $q 承诺没有 success
和 error
方法。
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);
});
我在 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 $http
的 httpPromise 的一部分获得。如果您实际上正在使用 http 进行 ajax 调用,只需 return $http
调用。
app.service("UserList", function($http) {
this.createUser = function(){
return $http('...');
}
});
success
和 error
方法是添加到 httpPromise 的特殊功能,除了 $q promise 功能,它是对 $q
promise 的扩展。
如果你正在寻找 return 数据 return 一个 $q
承诺,它有一个 then
方法,它等同于 success
方法。 $q 承诺没有 success
和 error
方法。
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);
});