取消父级的监听器是否适用于Firebase中的子级

iou*_*mmi 5 javascript firebase

我正在使用firebase在实时应用程序中同步数据.经过一些处理后,我想取消所有添加的听众链接.所以我说

myRef.off();
Run Code Online (Sandbox Code Playgroud)

但我发现一些听众仍然依恋.

我的问题是:当您将侦听器关闭为父节点时,它是否会传播给子节点,还是应该单独推迟每个级别?

Fra*_*len 8

我们来试试吧.

ref.on("value", function(snapshot) { 
  console.log("parent: "+JSON.stringify(snapshot.val()));
});
ref.child("child").on("value", function(snapshot) { 
  console.log("child: "+JSON.stringify(snapshot.val()));
});
ref.set('1');
ref.child('child').set('2');
ref.off();
ref.child('child').set('3');
ref.child('child').off();
ref.set('4');
Run Code Online (Sandbox Code Playgroud)

输出:

parent: "1"
child: "2"
parent: {"child":"2"}
child: "3"
Run Code Online (Sandbox Code Playgroud)

因此,在调用off父侦听器之后,子侦听器仍然会触发("3").但是如果我们得到同一个孩子并且打电话off,它就不再是("4")了.

JSBin:http://jsbin.com/wutaza/edit?js,console

结论:off()不会从子节点中删除侦听器.