Angularjs Firebase加载$scope视图不输入';t载荷

Angularjs Firebase加载$scope视图不输入';t载荷,angularjs,firebase,Angularjs,Firebase,我在Firebase中有一个加载问题。当我打开视图时,我想显示一个图像列表,但在我返回之前什么也没有发生(有一个闪光灯,我可以看到我的照片列表)。它正在工作,但没有显示在开幕式上 请问我错过了什么 以下是我的控制器视图的开头: 'Use Strict'; angular.module('App').controller('valider_photosController', function($scope, $state, $localStorage, Popup, Firebase, $fir

我在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());
      });
  }; 

});

由于firebase使用异步调用,所以当firebase使用您的数据响应时,角度循环已经完成,您将不会更新范围。您可以使用
$scope.$apply()强制它


有一个集成angular和firebase的工具,您不必关心诸如应用范围之类的事情。它叫。我完全建议您开始在应用程序中使用它

使用angularfire,您只需使用

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


由于firebase使用异步调用,所以当firebase使用您的数据响应时,角度循环已经完成,您将不会更新范围。您可以使用
$scope.$apply()强制它


有一个集成angular和firebase的工具,您不必关心诸如应用范围之类的事情。它叫。我完全建议您开始在应用程序中使用它

使用angularfire,您只需使用

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

我创建了一个工厂

.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);
        };
它就像一个符咒!再次感谢:)

我创建了一个工厂

.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);
        };

它就像一个符咒!再次感谢:)

你说得对!Angularfire非常适合这个谢谢你。。。再说一遍:)你说得对!Angularfire非常适合这个谢谢你。。。再次:)Whouu,我真的很想感谢@adolfosrs,因为我用angularFire更改了我应用程序中的所有引用,现在非常快速和干净。Whouu,我真的很想感谢@adolfosrs,因为我用angularFire更改了我应用程序中的所有引用,现在非常快速和干净。