1

私は 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;
    });
  }
}

私のlist.htmlファイル

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

getPeople メソッドで何も返さないため、結果が表示されないことはわかってい ますが、chrome で表示した結果のログ出力を見たかったのですが、Angular がその URL メソッドを呼び出し続けているため、100 万回もカウントされています。もう一度。代わりに、それはヒットし続けます。

応答を一度だけ返すように角度を付けるにはどうすればよいですか?

4

2 に答える 2

5

あなたが経験している問題は、AngularJS の動作方法と、より正確には、テンプレートを更新する必要があると判断する方法に関連しています。基本的に、AngularJS はモデルのダーティ チェックに基づいてテンプレートを更新します。それを説明する優れた投稿 ( How does data binding work in AngularJS? ) があるので、ここであまり詳細には入りたくありませんが、要するに、安定するまでモデルの変更に対して変更を続けます (モデルの変更はこれ以上できません) 。観察されます)。あなたの場合、getPeople()メソッドを呼び出すたびに新しいオブジェクトを取得しているため、モデルが安定することはありません。

これにアプローチする適切な方法は次のとおりです(可能な解決策の1つ):

function peopleController($scope,$http){
    $http.get('/location/-79.18925/43.77596').
    success(function(data){
      $scope.people = data;
    });      
} 

そして、あなたのテンプレートで:

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

上記のテンプレートは、データの到着時に自動的に更新されます。

繰り返しますが、これは考えられる解決策の 1 つにすぎないため、AngularJS のチュートリアルに従って、何が可能かをよりよく理解することをお勧めします: http://docs.angularjs.org/tutorial/

于 2012-09-24T21:03:53.653 に答える
3

いくつかのこと。angularjs へようこそ。素晴らしいフレームワークです。おそらく、Web ページから 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>

また、特に CRUD タイプのアプリケーションを実行している場合は、ngResource を調べることをお勧めします。

お役に立てれば

――段

于 2012-09-24T21:08:26.330 に答える