2012-08-24 59 views
11

我最近開始使用Angular.js,並獲得了一個演示項目,工作得很好。但是,當我試圖從後端Web服務加載數據而不是硬編碼數組時,我開始掛斷電話。具體來說,頁面似乎沒有正確的數據綁定後,我使用$ .getJSON()。完成(...)設置$範圍。在完成.getJSON之後,我不應該在$ scope中分配一個值,而應該在別的地方/別的地方做它?我搜索了高低,並且實際上找不到任何從後端抽取初始數據的角度示例。

在此先感謝您的幫助!

回答

13

由於您正在嘗試更新Angular以外的$scope,因此您必須在示波器上使用$apply方法進行型號更改。

也許是這樣的:

$.getJSON('ajax/test.json', function(data) { 
     $scope.$apply(function(){ 
      $scope.modelData = data; 
     }); 
    }); 

訪問與AngularJS後端的首選方法是到位的jQuery使用$http$resource服務。您不必使用$scope.$apply,您可以直接更新$scope.modelData

This post有很好的fiddle在Angular代碼之外更新模型。

+0

這是完美的感謝!雖然你的例子似乎工作完美,我喜歡你指出使用apply,因爲這有助於我瞭解它是如何工作的 - 我應該只使用http或資源,因爲那些看起來更像你所說的首選。再次感謝! – jkat98

0

或代替與應用包裹,只是把它在回調函數的最後像

$.getJSON('ajax/test.json', function(data) { 
    $scope.data = data;   
    $scope.$apply(); 
});