Javascript Firebase off删除所有EventType的所有回调

Javascript Firebase off删除所有EventType的所有回调,javascript,firebase,Javascript,Firebase,当我对特定事件类型的引用调用off时,firebase似乎正在删除所有事件类型的所有回调。在下面的代码中,我想删除child\u removed事件的所有回调,同时保留child\u added事件的回调。我做错了吗 <script src="https://cdn.firebase.com/js/client/2.3.1/firebase.js"></script> <script> var root_ref = new Firebase('https://

当我对特定事件类型的引用调用
off
时,firebase似乎正在删除所有事件类型的所有回调。在下面的代码中,我想删除
child\u removed
事件的所有回调,同时保留
child\u added
事件的回调。我做错了吗

<script src="https://cdn.firebase.com/js/client/2.3.1/firebase.js"></script>
<script>
var root_ref = new Firebase('https://jcatest.firebaseio.com');
root_ref.on('child_added', function(snap){
  console.log('child:', snap.key(), snap.val());
});
root_ref.off('child_removed');
root_ref.child('foo_key').set('foo_val');
</script>

var root\u ref=新Firebase('https://jcatest.firebaseio.com');
根目录参考on('child_added',函数(snap){
log('child:',snap.key(),snap.val());
});
root_ref.off(“子_移除”);
root_ref.child('foo_key')。set('foo_val');
从firebase文档:

如果未指定回调,则将删除指定eventType的所有回调


我意识到我可以将回调作为第二个参数传递,但如果可能的话,我希望避免这样做。文档似乎表明这是可能的。

我运行了一些测试,其中涉及的内容稍微多一些:当您关闭
时(“child\u已删除”)
Firebase停止触发
child\u*
事件。如果您有一个
事件侦听器,它将在
关闭('child_removed')
后继续激发。我会四处询问这是否是预期的行为。@FrankvanPuffelen是否有任何更新?它看起来确实像Firebase SDK中的一个bug。虽然没有修复的时间表,所以你可能想暂时解决它。是的,我意识到我可以做到。但是我想避免跟踪一堆额外变量。通过避免额外变量:root\u ref.on('child\u removed').off()正确的语法是
root\u ref.off('child\u removed',refChidRemoved)(on()方法返回函数,而不是ref)。
    <script src="https://cdn.firebase.com/js/client/2.3.1/firebase.js"></script>
    <script>
    var root_ref = new Firebase('https://jcatest.firebaseio.com');

    var refChidAdded = root_ref.on('child_added', function(snap){
      console.log('child:', snap.key(), snap.val());
    });

    //change here
    var refChidRemoved = root_ref.on('child_removed', function(snap){
      console.log('child:', snap.key(), snap.val());
    });
    refChidRemoved.off(); // OR root_ref.off('child_removed', refChidRemoved );

    root_ref.child('foo_key').set('foo_val');
    </script>
 root_ref.on('child_removed').off()