我的数组对象是" 用户"存储这些用户的所有个人资料信息(例如姓名和电子邮件)及其user.uid
。
另一个对象" 朋友"每个user.uid
的商店,用户的朋友但只有friend.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);
};
答案 0 :(得分:0)
很难确定,因为你问题中的代码有些不完整。但是,您的代码很可能只需要通知AngularJS范围已被修改:
FriendsService.getUserData(iterator.friendID).$loaded(function(output){
$timeout(function() {
$scope.FriendsData.push(output)
}
})
您需要为此服务注入$timeout
。通过此调用,AngularJS将收到通知,表示有新数据可用且视图将更新。
请注意,the relevant section of the AngularFire guide中记录了这一点。