我正在尝试检索用户的关注者个人资料并将其存储在$ 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方面的最佳实践。请有人指点我正确的方向吗?
答案 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);
});