当使用express从mongo获取数据时,http.get在for循环中不起作用

时间:2017-12-24 11:08:55

标签: angularjs mongodb express

我正在尝试从mongodb中获取数据,使用快速到for循环中的angular。 我可以访问此get实例中的数据,但不能访问它。这是我的代码

var daily_jobs=[];
$http.get(mongodUrl).then(function(response) {
    var allMachinename = response.data;
    daily_jobs=[];
    for(var i = 0;i<allMachinename.length;i++){
        $scope.masch_name.push({name:allMachinename[i].name,id:allMachinename[i].id,daily_jobs:[]});
        $http.get(mongodUrl+'getmaschdata/'+$scope.input_id+'/'+allMachinename[i].id).then(function(jobs) {
            if(jobs.data.length > 0){
                daily_jobs= jobs.data;
            }
            console.log(daily_jobs[0].job_name);
            },function(err){
                console.log(err);
        }); 
        $scope.masch_name[i].daily_jobs= daily_jobs;
    }
},function(err){
    //console.log(err);
});

变量daily_jobs是全局的,但是当我想在get函数之外访问它时,它总是保持为空。如何在第二个http.get函数之外获取该值?任何帮助将不胜感激。感谢。

1 个答案:

答案 0 :(得分:0)

我无法清楚地了解你想要实现的目标为什么你要在控制器中使用两个http而不是作为服务。但要回答你的问题,请更换

 $scope.masch_name[i].daily_jobs = jobs.data;

class TapeDeck 
{
  boolean canRecord = false;

  void playTape() 
  {
    System.out.println("tape playing");
  }

  void recordTape() 
  {
    System.out.println("tape recording");
  }
}

class TapeDeckTestDrive 
{
  public static void main(String [] args) 
  {
    TapeDeck t=new TapeDeck();
    t.canRecord = true;
    t.playTape();
    if (t.canRecord == true) 
    {
      t.recordTape();
    }
  }
}

如果您想了解更多关于此处的信息,那么这应该有用

Angular Share Variable betwen $http.get and controller

我建议您阅读AngularJS和$ scope.apply中的服务以及更多详细信息