您好我的代码非常简单,但我无法将http结果记录到此:
var app = angular.module('app', ['ngRoute']);
app.run(['contacts_helper','$rootScope', function(contacts_helper,$rootScope){
var x = contacts_helper.getAll();
console.log(x); // returns undefined
}]);
app.service('contacts_helper',['$http','$rootScope', function($http,$rootScope){
this.getAll = function(){
$http({
method:'GET',
url:'http://localhost/myjson.json',
params:{id_user:$rootScope.session.id_user}
}).success(function(response){
return response;
}).error(function(err){
return false;
});
}
}]);
它始终在控制台
中返回undefined
那么如何实现这个目标呢?
答案 0 :(得分:4)
在你的界面中 - 你应该让getAll
成为一个承诺。您需要使用.then
来访问其内容:
contacts_helper.getAll().then(function(response){
console.log(response);
}]);
这可以通过更改getAll
来返回http呼叫来实现。
this.getAll = function(){
return $http({
method:'GET',
url:'http://facebook.com',
params:{id_user:$rootScope.session.id_user}
}).success(function(response){
return response;
}).error(function(err){
return false;
});
};
甚至更简单:
this.getAll = function(){
return $http({
method:'GET',
url:'http://facebook.com',
params:{id_user:$rootScope.session.id_user}
});
};
此外,您应该阅读How do I return the response from an asynchronous call?