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()