我在Firebase中遇到了加载问题。我想在打开视图时显示图像列表,但在我回去之前没有任何反应(有闪光灯,我可以看到我的照片列表)。它正在工作但没有在开幕式中显示。
我错过了什么?
我的Controller视图的开头是:
'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 :(得分:0)
由于firebase可以使用异步调用,因此当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();
});
有一种工具可以集成角度和火力基础,使您不必担心应用范围等问题。它被称为angularfire。我完全建议你开始在你的应用程序中使用它。
使用angularfire,您只需使用
即可获取数据$scope.bidule = $firebaseObject(ref_images.child(idxSnap.key));
或
$scope.images = $firebaseArray(firebase.database().ref('images'));
答案 1 :(得分:0)
我创建了一个工厂
.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);
};
它就像一个魅力!再次感谢你:)