如何在AngularJS中使用Firebase加载相关数据?

如何在AngularJS中使用Firebase加载相关数据?,angularjs,firebase,Angularjs,Firebase,我有一个数组对象“users”,它存储这些用户的所有配置文件信息(如姓名和电子邮件)以及他们的user.uid 另一个对象“friends”为每个user.uid存储,该对象与用户为好友,但仅与friends.uid为好友 现在,当我检索user.uid的所有好友时,我希望以某种方式将该好友的配置文件链接到显示器。这显然会导致异步加载出现问题 我正在使用Firebase,希望有人能给我举个例子,说明他们是如何解决这个问题的 我尝试了以下方法,但不起作用(显示$loaded()之后的长度为0,即使

我有一个数组对象“users”,它存储这些用户的所有配置文件信息(如姓名和电子邮件)以及他们的
user.uid

另一个对象“friends”为每个
user.uid
存储,该对象与用户为好友,但仅与
friends.uid
为好友

现在,当我检索user.uid的所有好友时,我希望以某种方式将该好友的配置文件链接到显示器。这显然会导致异步加载出现问题

我正在使用Firebase,希望有人能给我举个例子,说明他们是如何解决这个问题的

我尝试了以下方法,但不起作用(显示$loaded()之后的长度为0,即使它加载了列表中的所有用户:

控制器

FriendsService.getFriends(user.uid).$loaded(
    function(Friends){

      $scope.Friends = Friends;

      // Friends is here still undefined???

      angular.forEach(Friends, function(iterator){

        FriendsService.getUserData(iterator.friendID).$loaded(function(output){

          $scope.FriendsData.push(output)

        })
      })
    },
    function(error){
      window.alert("Ooooops: " + error)
    })
服务

var getFriends = function(userID) { 

    return fbutil.syncObject("friendsofusers/" + userID + "/friends/")

    // equivalent to:
    // var ref = new Firebase("https://yourapp.firebaseio.com/friendsofusers/" + userID + "/friends/");
    // var sync = $firebase(ref)
    // return sync.$asObject();

 };

 var getUserData = function(userID) {

            return fbutil.syncObject("users/" + userID);

        };

很难确定,因为您问题中的代码有点不完整。但很可能您的代码只需要通知AngularJS范围已修改:

    FriendsService.getUserData(iterator.friendID).$loaded(function(output){
        $timeout(function() {
            $scope.FriendsData.push(output)
        }
    })
您需要为此向服务中注入
$timeout
。此调用到位后,AngularJS将被通知有新数据可用,视图将被更新


请注意,.

Hello Frank中记录了这一点。感谢您的回复。我尝试过,但它仍然只显示第一项,即使对象中有三项:(此代码没有提供足够的上下文来验证和理解问题。没有提到您正在使用angularFire种子,没有版本信息,也没有解释如何创建好友。您还创建了一个JavaScript对象并试图将其用作数组。请尝试使用syncArray()而不是syncObject()(如果需要长度)还有。你好,加藤,谢谢你的回复。我会尝试更新我的问题。你能解释一下我在哪里犯了同步调用异步列表的错误,因为我在.$loaded()之后调用了该列表吗?