2012-09-24 118 views
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方法,因爲我不是什麼returing的結果,但我希望看到我在Chrome中看到的結果的日誌輸出,但是一百萬次,並且自從角度繼續調用該url方法一遍又一遍地計數。相反,它一直在打。

我該如何獲得角度返回響應一次?

回答

5

您遇到的問題與AngularJS的工作方式以及更精確的方式有關 - 它如何決定模板需要更新。基本上AngularJS會根據模型的髒檢查來刷新模板。由於有一篇很好的文章解釋它(How does data binding work in AngularJS?),所以不想在這裏進行太多的細節,但總之它會隨着模型變化而不斷變化,直到它穩定下來(模型中沒有更多的變化可以被觀察到)。在你的情況下,模型不會穩定,因爲每次調用getPeople()方法都會得到新對象。

接近這將是(對可能的解決方案)的正確方法:

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> 

所提到的模板將根據數據自動被刷新到達。

再次,這僅僅是一個可能的解決方案,所以我會建議以下AngularJS教程得到了什麼是可能更好的感覺:http://docs.angularjs.org/tutorial/

+0

感謝您的及時回覆。這真的幫了我很多。自從你第一個回答以後,我會給你答案。 –

3

夫婦的事情。歡迎來到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> 

另外,我建議你尋找到了ngResource,特別是如果你正在做的CRUD類型的應用程序。

希望這有助於

--Dan

+0

謝謝丹,這真的很有幫助。其實你和pkozlowski的方式都有效。非常感謝你。 –