Firebase循环查找数据

时间:2013-12-24 18:47:45

标签: angularjs firebase angularjs-ng-repeat

$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中查找主数据还有其他更好的方法吗?

1 个答案:

答案 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);
      });
    });
  });
});