这是我的代码的基本思想。我删除了很多额外的东西从我的实际代码,但它主要是CSS - 都不应该对此有什么影响?Firebase child_removed未被调用
listRef.on('child_removed', function(childSnapshot, prevChildName) {
alert('child removed!');
});
listRef.on('child_added', function(childSnapshot, prevChildName) {
itemRef = childSnapshot.ref();
alert('child added!);
itemRef.on('value', function(snapshot){
alert('item value changed!');
var name = snapshot.val().name; // if I remove this line, child_removed is called
$("#name").html(name);
});
});
$("#button").click(function() {
itemRef.remove();
});
的问题是,在$("#button")
点击,的itemref从listRef删除在火力地堡,但'child_removed'
事件永远不会触发...如果我拿出
driveRef = undefined;
然后child_removed
叫...
其他的一切工作 - $("#name")
被更新,所有的的我用来测试它的210个对话框工作正常 - 唯一的问题是child_removed
未被调用。
'driveRef = undefined'没有出现在您的示例代码中;我认为这是一个错误的复制/粘贴。但是,您评论的行使用snapshot.val()。name,但snapshot.val()可能为null! – Kato 2012-07-24 15:06:36
感谢加藤,我没有意识到itemRef.on()将在物品被移除时被调用...... – 2012-07-24 16:56:14
对,如果您没有从Lehenbauer先生的回答中推论出来,我的解释是,当“开启('value',...)'被调用时,如果记录不存在,它将被视为查找并用'null'调用(文档中的更多内容);从这一点来看,它的表现就好像它听起来似的 – Kato 2012-07-24 19:48:30