2012-08-24 1 views
11

最近Angular.jsで遊んで始め、デモプロジェクトがうまく機能しました。しかし、バックエンドのWebサービスからデータを読み込もうとしたときに、ハードコードされた配列を読み込もうとすると、ハングアップするようになりました。具体的には、$。getJSON()。done(...)を使用して$スコープを設定した後、ページが正しくバインドされていないように見えます。 .getJSONを実行した後で$ scopeに値を代入するのではなく、別の場所で行うべきか違うのですか?私はハイとローを検索し、バックエンドから最初のデータを引き出す角度の良い例を見つけることはできませんでした。

ありがとうございました!

答えて

13

$scopeをAngular以外で更新しようとしているため、範囲の$applyメソッドを使用してモデルを変更する必要があります。

は多分のようなもの:

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

AngularJSとバックエンドにアクセスするための好ましい方法は、jQueryのの代わりに$httpまたは$resourceサービスを使用することです。あなたは$scope.$applyを使用する必要はありませんあなたは$scope.modelDataを直接更新することができます。

This postは、角度コード外のモデルを更新するのに良いfiddleを持っています。

+0

のようにコールバック関数の最後でそれを呼び出します!あなたの例は完璧に動作するように見えますが、私はあなたがアプリケーションの使用を指摘したのが好きです。なぜなら、それがすべての仕組みを理解するのを助けたからです - あなたが言ったように、再度、感謝します! – jkat98

0

またはその代わりにラップ適用、ちょうどこれは完璧なおかげで

$.getJSON('ajax/test.json', function(data) { 
    $scope.data = data;   
    $scope.$apply(); 
}); 
関連する問題