这是我的场景。当通过浏览器事件页面加载后添加子项时,我想在标题中指出它。但在页面加载时,添加的子项也会被调用。
如何区分添加的初始子项与实际添加的新条目。
谢谢蒂姆
最佳答案
Firebase 故意不区分“初始”数据和"new"数据。在大多数情况下,这允许更简单的开发,因为您只需为数据编写一组逻辑,而不是同时处理初始数据情况和新数据情况。
我可以理解在这种情况下您希望如何进行区分。我不确定你到底在做什么,但如果你正在构建一个聊天应用程序,你可能希望根据最新消息的时间戳来闪烁标题,而不是根据它是否是"new"消息。如果在页面加载之前发送了一条消息,这将允许标题在页面加载时闪烁,这可能是可取的。在其他一些情况下,您可能实际上想要闪烁未读数据的标题,并且您可能需要考虑将子项标记为“已读”,并仅针对未显示“已读”位的子项闪烁标题。这将使事情能够在页面刷新之间无缝工作。
如果您绝对需要知道"new"数据何时出现,您可以尝试使用“once”和“value”事件类型来获取数据,然后使用“on”和 startAt 查询和“child_added” "之后显示新数据的事件类型。它看起来像这样:
var data = new Firebase(...);
data.once("value", function(d) {
//TODO: display initial state...
data.startAt(null, <last id in snapshot>).on("child_added", function(newMessSnapshot) {
//TODO: render new child and flash title bar.
}
}
或者,如果您想以真正简单的方式做到这一点,您可以设置一个计时器,这样标题就不会在页面加载的前 N 秒内收到的任何消息闪烁。
希望有帮助!
关于firebase - 有没有办法知道 Child Added 在什么上下文中被调用?特别是页面加载与其他事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12850789/