Angular js - 从方法外部返回和console.log $ http响应

时间:2014-03-14 15:20:19

标签: javascript angularjs http response promise

您好我的代码非常简单,但我无法将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

那么如何实现这个目标呢?

1 个答案:

答案 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?