1
firebase-databaseにいくつかのオブジェクトを設定し、HTMLベースのテーブルに 'child_added'とappend()を付けて表示し、データベースに追加するとすぐに動的に追加しますテーブルの各行に削除ボタンにする必要がありますが、問題は、私はこの削除ボタンを動作させることはできません...JavaScriptを使用してfirebaseからオブジェクトを削除する
これは、データベースの構造がどのように見えるかです:
Assets: {
-KkBgUmX6BEeVyrudlfK: {
id: '-KkBgUmX6BEeVyrudlfK',
name: 'John',
brand: 'HP'
}
-KkDYxfwka8YM6uFOWpH: {
id: '-KkDYxfwka8YM6uFOWpH',
name: 'Jack',
brand: 'Dell'
}
}
これは私です:
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>");
});
にconsole.logに示したオブジェクトキーの正しい値を返しますが、$("#table_body").on('click','.delete-btn', function(e){
の「AssetKeyのは、」正常に動作していない場合rootRef.on("child_changed", snap => {
内部にあるassetKey
...
ありがとう!これは私の問題を解決しました、それは今、美しく働いています:D –
@LeonardoCarvalho Blz cara! Saudaçõesdo Rio de Janeiro ;-) –
実際には行が削除されたときに別の行を追加して削除すると(本当に速い)、問題があります。これは 'child_added 'のためだと思います。 '' child_removed''と '' child_changed''を削除すると、同じ情報を持つ別の行を追加すると同時に行が削除されます。 –