如何使用angularfire检索用户的关注者配置文件

时间:2015-05-14 09:57:31

标签: angularjs firebase ionic angularfire

我正在尝试检索用户的关注者个人资料并将其存储在$ scope.object中,以便我可以使用ng-repeat。 我的firebase结构如下所示,

users
  - user_id:
       - name:
       -followers: 
           - follower: user_id1
           - follower: user_id2...
       -following :

现在我可以从关注者部分获取user_id列表,我想要的是从用户部分检索他们的个人资料/详细信息。 这就是我试过的,

 $scope.followers = [];
$scope.profile.$loaded().then(function() {
           $scope.profile.followers);   
          angular.forEach()
           angular.forEach($scope.profile.followers, function(value, key) {

                var followerID = value.follower;
                userProfile = Profile(followerID);  // retrieve firebaseobject profile from factory
                 $scope.followers.push(angular.extend({}, userProfile));
                  console.log($scope.followers);

           });
         }); console.log($scope.followers);

否,当我在控制台中看到输出时,我可以在 forEach 循环中看到他们的个人资料/详细信息,但$ scope.followers在循环外是空的。 我不确定它是否是firebase和/ angularJS方面的最佳实践。请有人指点我正确的方向吗?

1 个答案:

答案 0 :(得分:0)

您正在执行异步$scope.profile.$loaded(),它正在返回承诺。并且您试图在ajax成功之外访问$scope.followers对象,这将[]随时进行。原因是对象在成功函数forEach循环中被填充。

您需要将console.log($scope.followers);置于.then函数内,以便获得followers

<强>代码

$scope.followers = [];
$scope.profile.$loaded().then(function() {
    angular.forEach($scope.profile.followers,
        function(value, key) {

            var followerID = value.follower;
            userProfile = Profile(followerID); // retrieve firebaseobject profile from factory
            $scope.followers.push(angular.extend({}, userProfile));
            console.log($scope.followers);

        }); 
    //should inside then to get value which is comming asynchronusly
    console.log($scope.followers);
});