问题
我在 firebase-database 上设置了一些对象,并在带有“child_added”和 append() 的 HTML 表上显示它们,以便在将它们添加到数据库后立即动态添加它们,并且每行必须有一个删除按钮的表,但问题是,我无法让这个删除按钮工作......
这是数据库结构的样子:
Assets: {
-KkBgUmX6BEeVyrudlfK: {
id: '-KkBgUmX6BEeVyrudlfK',
name: 'John',
brand: 'HP'
}
-KkDYxfwka8YM6uFOWpH: {
id: '-KkDYxfwka8YM6uFOWpH',
name: 'Jack',
brand: 'Dell'
}
}
这是我的index.js
:
var rootRef = firebase.database().ref().child("Assets");
$("#table_body").on('click','.delete-btn', function(e){
var $row = $(this).closest('tr'),
rowId = $row.data('id');
var assetKey = rootRef.child("id");
//it should remove the firebase object in here
rootRef.child(assetKey).remove()
//after firebase confirmation, remove table row
.then(function() {
$row.remove();
})
//Catch errors
.catch(function(error) {
console.log('ERROR');
});
});
rootRef.on("child_changed", snap => {
var assetKey = snap.child("id").val();
var name = snap.child("name").val();
var brand = snap.child("brand").val();
$("#table_body").append("<tr data-id='"+assetKey+"'>"+
"<td>" + name + "</td>" +
"<td>" + brand + "</td>" +
"<td><div buttons>"+
"<button class='delete-btn>delete</button>"+
"</div></td></tr>");
});
assetKey
rootRef.on("child_changed", snap => {
if 显示在 console.log 中的assetKey 返回对象键的正确值,但$("#table_body").on('click','.delete-btn', function(e){
无法正常工作...
回答1
这条线在我看来是错误的(试图获取顶级Assets
节点的不存在的id
属性):
var assetKey = rootRef.child("id");
试试这个:
var rowId = $row.data('id');
rootRef.child(rowId).remove()
...