我在Firebase中有两个对象,我试图从users
对象中检索一个网址,方法是将其密钥与我user
中的messages
值匹配1}}对象。
我的数据如下:
{
"messages" : {
"-JmY3zLmz9_6MjLRJCch" : {
"message" : "test",
"published" : 1428665136553,
"user" : "twitter:14075704",
"username" : "realph"
}
},
"users" : {
"twitter:14075704" : {
"pic" : "https://pbs.twimg.com/profile_images/1180195102/23684_378330977259_680962259_4275328_5191_n_normal.jpg"
},
"twitter:86584100" : {
"pic" : "https://pbs.twimg.com/profile_images/378800000196615428/dfb3b5fbdc1a260cea977dc3f24262ab_normal.jpeg"
}
}
}
我尝试将messages.user
与users.key()
匹配,以便我可以检索pic
值。
app.js
var ref = new Firebase("https://url.firebaseio.com/");
var messagesRef = ref.child('messages');
var usersRef = ref.child('users');
var currentUser = null;
messagesRef.orderByChild("published").on('child_added', function(snap) {
$scope.messages = $firebaseArray(messagesRef);
$scope.users = $firebaseArray(usersRef);
});
的index.html
<div ng-repeat="message in messages">
{{ message.username }}
{{ message.message }}
{{ message.user }}
<img ng-src="IMAGE TO GO HERE" />
</div>
最简单,最好的方法是什么?我此刻难倒。
感谢任何帮助。提前谢谢!
答案 0 :(得分:0)
由于users
是一个对象(它看起来像是由userId键入的字典),因此只需检查该属性即可。您可以使用bracket notation来获取具有字符串变量的对象的属性。这对于具有类字典设置的对象非常有用,因为属性名称是字典的键。
最简单的说,将user
字符串转换为图像src的函数如下所示:
$scope.getImage = function (user) {
var users = $scope.users;
if (users[user] != null) { //check if the property exists
return users[user].pic;
}
return "No user found";
};
HTML:
<div ng-repeat="message in messages">
Image src: {{ getImage(message.user)}}
<img ng-src="{{getImage(message.user)}}" />
</div>
请参阅此plunker