Coo*_*oop 1 javascript function angularjs angularjs-service angular-promise
我在Angular控制器中有一个函数,如下所示:
app.controller("UsersController", ["$scope", "UserList", function($scope, UserList) {
$scope.createUserSubmit = function(newUser) {
UserList.createUser().success(function(data){
console.log(data);
});
}
}]);
Run Code Online (Sandbox Code Playgroud)
createUserSubmit()调用该函数时,它会将另一个函数调用到createUser()服务中的函数UserList.
该服务看起来像这样:
app.service("UserList", function() {
this.createUser = function(){
console.log("doing it");
return "hi";
}
});
Run Code Online (Sandbox Code Playgroud)
现在,当这一切都运行时,我记录了"正在执行"消息,但随后我收到以下错误并且console.log(data)不记录.
TypeError: undefined is not a function
Run Code Online (Sandbox Code Playgroud)
通常这种类型的错误是自我解释的,所以要么我是一个白痴,要么就是令人困惑的事情.据我所见,这是一个功能.
您没有success从字符串返回值(您从方法返回)中获取方法createUser.你把它作为angular $http的httpPromise的一部分.如果你实际上正在使用http进行ajax调用,只需返回$http调用.
app.service("UserList", function($http) {
this.createUser = function(){
return $http('...');
}
});
Run Code Online (Sandbox Code Playgroud)
success和error方法是除了$ q promise函数之外添加到httpPromise的特殊函数,它是$qpromise 的扩展.
如果你想返回数据返回一个$qpromise,它有一个then等同于success方法的方法.$ q promise没有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;
});
}
});
Run Code Online (Sandbox Code Playgroud)
和
UserList.createUser().then(function(data){
console.log(data);
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5782 次 |
| 最近记录: |