2016-03-29 10 views
1

Firebaseデータベースに格納されているデータを表示したいとします。私はスコープにデータを取得するのに問題はありませんが、ユーザーには表示されません。

var ref = new Firebase('https://URL.firebaseio.com/users'); 

    $scope.users = []; 

    ref.once("value", function(snapshot) { 
     snapshot.forEach(function(childSnapshot) { 
      var dataUser = childSnapshot.val() 
      dataUser.id = childSnapshot.key() 
      $scope.users.push(dataUser); 
     }); 
    }); 

ng-inspector Chrome拡張機能は、データがスコープに読み込まれたことを確認します。

enter image description here

私は何をしないのですか?

ありがとうございました。 DOMが更新されるよう$scopeへの非同期の変更を行う際$http$setTimeoutなどの

+0

$スコープを使用してみてください適用します$;。 anglejsがダイジェストループを更新するようにするには – sebenalern

+0

if(!$ scope。$$ phase &&!$ scope。$ root。$$ phase){ $ scope。$ digest(); } forEachループの後 –

+0

@ inspiredの答えが働くでしょう。代わりに、AngularFireを使用することができます。これは、必要に応じて内部的に '$ timeout()'を呼び出します。 –

答えて

1

サービスが自動的に$apply()メソッドを呼び出します。ループ$digestをトリガーするには、$scope.$apply();に電話する必要があります。

あなたは行うことができます:

var ref = new Firebase('https://URL.firebaseio.com/users'); 

$scope.users = []; 

ref.once("value", function(snapshot) { 
    snapshot.forEach(function(childSnapshot) { 
     var dataUser = childSnapshot.val() 
     dataUser.id = childSnapshot.key() 
     $scope.users.push(dataUser); 
    }); 
    $scope.$apply(); //let angular know to trigger $digest loop to update the DOM. 
}); 
関連する問題