2016-07-31 4 views
1

Firebaseで読み込みに問題があります。私はビューを開いたときに画像のリストを表示したいが、私が戻ってくるまで何も起こらない(フラッシュがあり、私の写真リストを見ることができる)。機能していますが、オープニングには表示されません。
どうしたらいいですか?私のコントローラのビューの始まりがある

:非同期呼び出しとfirebase作品以来

'Use Strict'; 
angular.module('App').controller('valider_photosController', function($scope, $state, $localStorage, Popup, Firebase, $firebaseObject, $ionicHistory, $ionicPopup, $ionicModal, $cordovaCamera) { 

    $scope.imagestab = []; 
    var ref_logements = firebase.database().ref('logements'); 
    var ref_images = firebase.database().ref('images'); 

    ref_logements.child(id_logement).child('images').on('child_added', added); 

    function added(idxSnap, prevId){ 
     ref_images.child(idxSnap.key).once('value', function(datasnap){ 
      var bidule = datasnap.val(); 
      bidule['key'] = datasnap.key; 
      $scope.imagestab.push(bidule); 
      console.log('La valeur'+datasnap.key+'donne '+datasnap.val()); 
     }); 
    }; 

}); 

答えて

0

は時間firebaseでは、角度サイクルはすでに終わっていたデータで応答し、あなたのスコープは更新されていません。 。 $scope.$apply();を使用して強制的に実行できます。

ref_images.child(idxSnap.key).once('value', function(datasnap){ 
     var bidule = datasnap.val(); 
     bidule['key'] = datasnap.key; 
     $scope.imagestab.push(bidule); 
     $scope.$apply(); 
}); 

あなたは、このような範囲を適用するなどの事を気にする必要はありませんように、角度とfirebaseを統合するツールがあります。それはangularfireと呼ばれています。アプリケーションで使用することをお勧めします。あなたは、単に

$scope.bidule = $firebaseObject(ref_images.child(idxSnap.key)); 

または

$scope.images = $firebaseArray(firebase.database().ref('images')); 
+0

あなたはそうです! Angularfireは完璧です。ありがとうございました。もう一度:) –

0

を使用してデータを取得することができangularfireで

は私が工場

.factory('Firebase', function ($firebaseArray, $firebaseObject) { 
     var ref = firebase.database().ref(); 
     return { 
      all: function (section) { 
       var data = $firebaseArray(ref.child(section)); 
       return data; 
      }, 
      getById: function (section, id) { 
       var data = $firebaseObject(ref.child(section).child(id)); 
       return data; 
      }, 
      get: function (section, field, value) { 
       var data = $firebaseArray(ref.child(section).orderByChild(field).equalTo(value)); 
       return data; 
      } 
     }; 
    }) 

を作成し、あなたが言ったように、その後、私のコントローラでは、私は置き換え:

 var ref_logements = firebase.database().ref('logements'); 
     var ref_images = firebase.database().ref('images'); 
     ref_logements.child(index2).child('images').on('child_added', added); 

     function added(idxSnap, prevId) { 
      var monimage = Firebase.getById('images', idxSnap.key); 
      $scope.imagestab.push(monimage); 
     }; 

そして、それは魅力のように機能します!もう一度ありがとう:)

+0

私は本当に速くてクリーンで、私はあなたのアプリでangularFireですべてのリファレンスを変更したので、あなたは@adolfosrsに本当に感謝したいと思います。 –

関連する問題