AngularJS不断调用$http

AngularJS不断调用$http,angularjs,Angularjs,我对AngularJS非常陌生(新4个小时),我正在尝试让http调用正常工作,但它似乎是Angular一次又一次地调用http get请求。我确信这是因为我的方法是错误的。这就是我想做的 我的控制器文件片段Web服务运行良好。我正在node.js应用程序中运行此功能 function peopleController($scope,$http){ $scope.getPeople = function(){ $scope.revar = {}; $http.get('/l

我对AngularJS非常陌生(新4个小时),我正在尝试让http调用正常工作,但它似乎是Angular一次又一次地调用http get请求。我确信这是因为我的方法是错误的。这就是我想做的

我的控制器文件片段Web服务运行良好。我正在node.js应用程序中运行此功能

 function peopleController($scope,$http){
  $scope.getPeople = function(){
    $scope.revar = {};
    $http.get('/location/-79.18925/43.77596').
    success(function(data){
      console.log(data);
      $scope.revar = data;
    });
  }
}
My list.html文件

   <div ng-controller="busController">
        <div class="blueitem">{{getPeople()}}</div>
   </div>

{{getPeople()}}
我知道我不会看到结果,因为我不会在getPeople方法中重复任何内容,但我想看到在chrome中看到的结果的日志输出,但由于angular不断反复调用该url方法,因此我想查看一百万次。相反,它一直在打


如何让AngularJS只返回一次响应?

您遇到的问题与AngularJS的工作方式有关,更准确地说,与它如何决定模板需要刷新有关。基本上AngularJS将根据对模型的脏检查来刷新模板。我不想在这里讨论太多细节,因为有一篇很好的帖子解释了它(),但简而言之,它会随着模型的变化而不断变化,直到它稳定下来(不能再观察到模型的变化)。在您的例子中,模型永远不会稳定,因为每次调用
getPeople()
方法都会得到新对象

正确的解决方法是(在可能的解决方案中):

然后,在模板中:

   <div ng-controller="busController">
        <div class="blueitem">{{people}}</div>
   </div>

{{人}
上述模板将在数据到达时自动刷新


再一次,这只是一个可能的解决方案,因此我建议遵循AngularJS教程,以更好地了解可能的情况:

您遇到的问题与AngularJS的工作方式有关,更准确地说,与它决定模板需要刷新的方式有关。基本上AngularJS将根据对模型的脏检查来刷新模板。我不想在这里讨论太多细节,因为有一篇很好的帖子解释了它(),但简而言之,它会随着模型的变化而不断变化,直到它稳定下来(不能再观察到模型的变化)。在您的例子中,模型永远不会稳定,因为每次调用
getPeople()
方法都会得到新对象

正确的解决方法是(在可能的解决方案中):

然后,在模板中:

   <div ng-controller="busController">
        <div class="blueitem">{{people}}</div>
   </div>

{{人}
上述模板将在数据到达时自动刷新


再一次,这只是一个可能的解决方案,所以我建议遵循AngularJS教程来更好地了解可能的情况:

两件事。欢迎使用angularjs,它是一个很棒的框架。你可能不应该在网页上给getPeople打电话。相反

 function peopleController($scope,$http){
  var getPeople = function(){
    $scope.revar = {};
    $http.get('/location/-79.18925/43.77596').
    success(function(data){
      console.log(data);
      $scope.revar = data;
    });
  }
  getPeople();
}
然后是html

<div ng-controller="busController">
        <div class="blueitem">{{revar|json}}</div>
</div>

{{revar | json}}
此外,我建议您研究ngResource,特别是如果您正在处理CRUD类型的应用程序

希望这有帮助


--dan有两件事。欢迎使用angularjs,它是一个很棒的框架。你可能不应该在网页上给getPeople打电话。相反

 function peopleController($scope,$http){
  var getPeople = function(){
    $scope.revar = {};
    $http.get('/location/-79.18925/43.77596').
    success(function(data){
      console.log(data);
      $scope.revar = data;
    });
  }
  getPeople();
}
然后是html

<div ng-controller="busController">
        <div class="blueitem">{{revar|json}}</div>
</div>

{{revar | json}}
此外,我建议您研究ngResource,特别是如果您正在处理CRUD类型的应用程序

希望这有帮助


--丹

谢谢丹,这真的很有帮助。事实上,你和pkozlowski的方法都奏效了。非常感谢。谢谢你,丹,这真的很有帮助。事实上,你和pkozlowski的方法都奏效了。非常感谢。感谢您的及时回复。这真的帮了我很大的忙。既然你先回答了,我就给你答案。谢谢你的及时回复。这真的帮了我很大的忙。既然你先回答了,我就给你答案。