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