正在使用来自firebase DB的用户填充动态用户列表。但是当为任何用户更改任何值时,它不会反映在客户端,因为没有监听器。
//Loop for All Users
var anotherUserId = snapshot.key;
var ref = firebase.database().ref("users/"+anotherUserID);
ref.on('value', function(snapshot) {
var obj = snapshot.val();
li += ' <div class="contacts-container '+obj.status+'">';
li += ' <h3>'+obj.fname+' '+obj.lname+'</h3>';
});
//Loop Ends
如果一个用户的状态发生了变化,则不会反映在客户端直到我刷新页面。
因此,如果用户在数据库中的状态发生变化,则应将 DIV 中的类更改为切换在线信号。 (灰色或绿色)
基本上实时变量不起作用,但刷新它可以工作。
答案 0 :(得分:1)
您应该能够使用child_changed
事件收听对用户数据库的更改。然后,您可以向div添加一个id,以便您可以选择更改并更新该类的ID。
有这样的效果:
var ref = firebase.database().ref("users");
ref.on('child_changed', function(snapshot){
var changedUser = snapshot.val();
document.getElementById(changedUser.id).classList.toggle('active');
}