Angular等待$ http调用来执行下一个函数

时间:2014-10-27 09:28:20

标签: angularjs http promise wait

我一直在这里寻找同样的问题,我发现了一些东西,但似乎并不适合我。让我来描述我的情景:

我正在为自己完成的Web应用程序添加一些功能,该Web应用程序用于管理某些客户的网页开发。每个客户都有一个网页,每个客户都有一份提案网页列表,以及设计人员做过该提案的人员。

开发人员列表,能够看到谁在Web应用程序中做了什么新东西以及我的问题的原因,所以,问题是:

网络应用加载后,我会从数据库中获取开发人员列表,以及所有拥有网页的客户列表。因此,Web应用程序接下来要做的是自动选择列表的第一个客户并在另一个列表中显示其提议。要做到这一点,需要开发人员列表,但由于它还没有加载,我得到:

  

无法阅读财产' 0'未定义的

当我想迭代$scope.developers对象

我为开发人员做的是$http这样的调用:

 $http({
        method: 'POST',
        url: url,
        headers: {'Content-Type': 'application/x-www-form-urlencoded'}
    }).success(function(data) {
        $scope.developers = data;
    });

我知道$http会执行异步调用,但我需要等待$scope.developers加载数据的内容。

当我需要使用据称存储在$scope.developers中的数据时,问题就出现了。我试图在$scope.developers函数中调用使用.success的函数,但同样的情况也会发生。

我试图在这个帖子中使用解决方案,但是我得到了同样的错误。

How to wait till the response comes from the $http request, in angularjs?

任何帮助?如果我的问题不明确,我会尝试更好地解释它。

1 个答案:

答案 0 :(得分:1)

请在$scope.developers调用之前将$http定义为空数组,即

app.controller("someCtrl", function($scope, $http) {

  $scope.developers = [];
    //....
  $http({
    method: 'POST',
    url: url,
    headers: {
      'Content-Type': 'application/x-www-form-urlencoded'
    }
  }).success(function(data) {
    $scope.developers = data;
  });

  //..

});