我正在撰写Firebase网络应用(Javascript)。如果我像这样写一个child_added的引用:
dataRef.child('bids').child(auction).child(lotno).on('child_added', function(data){...}
“auction”和“lotno”是变量,会在应用运行时发生变化。我正在编写脚本以在发生这种情况时关闭每个旧引用(使用OFF),然后我打开一个新引用。我的OFF看起来像这样:
dataRef.child('bids').child(auction).child(lotno).off('child_added');
首先,我正确地这样做了吗?第二,是否有一种更普遍的方法可以关闭child_added引用,以避免一个人意外地被打开的可能性?
意思是,我可以简单地编写将关闭“出价”中所有child_added的Javascript吗?想知道这样的事情是否有效:
dataRef.child('bids').off('child_added');
是否有一个可以覆盖所有孩子的野生动物园?这会关闭所有内容,还是必须写出通过子元素的每条特定路径?
答案 0 :(得分:0)
由于路径是用两个变量构建的,并且在任何给定时间只打开一个侦听器,我决定通过简单地将两个值分别存储在它们自己的变量中来解决这个问题,例如:
var storedPath1;
var storedPath2;
dataRef.child('bids').child(auction).child(lotno).on('child_added', function(data){
if (storedPath1!=undefined && storedPath2!=undefined{
dataRef.child('bids').child(storedPath1).child(storedPath2).off('child_added');
}
storedPath1=auction;
storedPath2=lotno;
}
如果先前已经建立了监听器,则在打开新监听器时将关闭监听器。