$scope.authorizedUsers = [];
fbRef.child('folders/').child($routeParams.folderID).once('value',
function(ss) {
ss.forEach(function(childSnapshot) {
fbRef.child('users/').child(childSnapshot.name()).once('value',
function(user) {
$scope.authorizedUsers.push(user.val());
console.log($scope.authorizedUsers);
});
});
});
我使用上面的代码查找主数据,然后使用ng-repeat
<div ng-repeat="user in authorizedUsers">{{user}}</div>
但有时只显示循环数据。有时意味着我必须刷新几次才能显示数据。
在firebase中查找主数据还有其他更好的方法吗?
答案 0 :(得分:1)
回调是异步调用的,因此它们不会在Angular的摘要范围内发生。因此,在新编译发生之前,它们不会应用于页面。
angularFire内部使用的解决方案是调用$ timeout(),这将强制Angular的编译过程运行。一些实验将揭示完成这项工作的最有效方法。这是一个蛮力:
$scope.authorizedUsers = [];
fbRef.child('folders/').child($routeParams.folderID).once('value',
function(ss) {
ss.forEach(function(childSnapshot) {
fbRef.child('users/').child(childSnapshot.name()).once('value',
function(user) {
$timeout(function() {
$scope.authorizedUsers.push(user.val());
console.log($scope.authorizedUsers);
});
});
});
});