【发布时间】:2017-01-28 18:40:52
【问题描述】:
我最近创建了一个聊天功能,我注意到一个奇怪的错误。以下是我在控制器中使用的代码:
myFirebase.on('child_added', function(snapshot) {
var msg = snapshot.val();
var msgUsernameElement = document.createElement("b");
msgUsernameElement.textContent = msg.user;
var msgTextElement = document.createElement("p");
msgTextElement.textContent = msg.message;
var msgElement = document.createElement("div");
msgElement.appendChild(msgUsernameElement);
msgElement.appendChild(msgTextElement);
document.getElementById("messages").append(msgElement);
});
假设我们第一次进入 Chat 视图,然后当我聊天时,.appendChild() 工作得非常好,输入的消息显示在 div 'messages' 中。现在假设我们离开 Chat 视图并重新进入它,然后键入并发送另一条聊天消息,然后执行两次 .appendChild() 并且相同的消息在 div 'messages' 中出现两次。这会线性继续,因此如果我们第五次重新进入控制器并发送消息,则该消息将五次附加到 div 'messages' ...... 这是怎么回事?
我正在使用 Ionic 框架和现成的应用程序模板“标签”。我的聊天功能在聊天详细信息控制器中。
【问题讨论】:
标签: javascript html angularjs ionic-framework firebase-realtime-database