1
在我的应用中,我有一个聊天客户端。左侧div有对话列表,右侧div标记为#message-content
。当用户点击对话时,它会添加一个监听器,并在消息内容部分生成对话。当他们点击左边的div中的另一个对话时,右边的div被擦除,并且与监听者一起产生新的消息。使用Firebase单击多个会话时无法禁用侦听器
问题是,它似乎支持听众,所以如果我查看多个对话,然后收到一条消息,它会生成n条消息,其中n是我点击的对话数量。
我假设我需要从前一个对话中分离出听众,但我无法弄清楚如何。
下面是我打电话,当用户单击左侧的锂元素的功能,它会清除#message-content
,并运行:
var displayMessagesDetail = function (uid, chatID) {
usersRef.child(`${uid}/chats/${chatID}/messages`).on('child_added', function(snapshot) {
let message = snapshot.val();
let userClass = (message.user === auth.currentUser.uid ?
'message-bubble-self' :
'message-bubble-other'
);
$('#message-detail-content').append($('<p></p>').addClass(userClass).text(message.text));
});
};
尽管只有一个监听器,我该怎么做?有没有办法与那个听众说话,并改变路径?因为我想我可以让一个侦听器存在,并且如果用户点击另一个聊天div,它会改变侦听器路径,并让它加载正确的消息。 – VDog
如果您只想一次只有一个活跃的听众,我相当确信您必须关闭旧的聊天室,并在每次切换聊天时创建一个新的聊天室。我不认为你可以修改活动的侦听器。尝试将活动聊天uid和chatID保存为变量,并且每次切换到新聊天时,都可以在活动聊天中调用'.off()'。然后创建一个新的监听器并更新您的活动聊天变量 – Shane
好啊,非常感谢。是的,我现在通过点击一条新消息关闭了听众,所有人都按照应有的方式工作。谢谢! – VDog