【问题标题】:how to listen for remove child using jquery and firebase如何使用 jquery 和 firebase 监听删除子节点
【发布时间】:2019-07-24 22:18:12
【问题描述】:

问题是:当我单击删除按钮时,数据会从 firebase 中删除,但我需要刷新页面,我如何在不刷新页面的情况下做到这一点

var userDataRef = firebase.database().ref("User/3N2f2rJSSAZmFOdZEeJdlsuEZam2").orderByKey();

      userDataRef.on('child_added', function(childSnapshot) {
     var key = childSnapshot.key;
        var childData = childSnapshot.val();         
        var title_val = childData.Title;
        var url_val = childData.Url;


        var myRow = $("<tr><td>" + title_val + "</td><td><a href=" + url_val + " target='_blank'> <button class='box'>GO</button></a></td><td><button class='box'>Delete</button></a></td></tr>");
        myRow.find("button").on("click", function(){
          var ref = firebase.database().ref("User/3N2f2rJSSAZmFOdZEeJdlsuEZam2")
          ref.child(key).remove();
        });
        $("#data").append(myRow);

我尝试了事件监听器 child_removed 和 child_changed 但没有运气,也许我没有把它放在正确的地方

var userDataRef = firebase.database().ref("User/3N2f2rJSSAZmFOdZEeJdlsuEZam2").orderByKey();

userDataRef.on('child_removed', function(childSnapshot) {
  var key = childSnapshot.key;
  var childData = childSnapshot.val();         
  var title_val = childData.Title;
  var url_val = childData.Url;


  // i dont know how to update the table after child_removed event

});

【问题讨论】:

  • 从数据库中删除子节点时,Firebase 会触发您应该处理的 child_removed 事件。如果您尝试过,请点击下方的edit 链接,将显示您尝试过的内容的相关代码添加到您的问题中。
  • 我更新了我的问题

标签: javascript jquery firebase firebase-realtime-database


【解决方案1】:

您需要确保myRow 包含它所基于的数据库节点的key。通常通过包含键作为您生成的顶级元素的id

var myRow = $("<tr id='" + key + "'><td>" + title_val + "</td><td><a href=" + url_val + " target='_blank'> <button class='box'>GO</button></a></td><td><button class='box'>Delete</button></a></td></tr>");

顺便说一句:在现代 JavaScript 中,您可以使用更短的模板字符串:

var myRow = $(`<tr id='${key}'><td>${title_val}</td><td><a href='${url_val}' target='_blank'> <button class='box'>GO</button></a></td><td><button class='box'>Delete</button></a></td></tr>`);

现在有了这些信息,您可以在 child_removed 处理程序中查找正确的 HTML 元素,然后从页面中删除该元素:

userDataRef.on('child_removed', function(childSnapshot) {
  var key = childSnapshot.key;    

  $('#'+key).remove();    
});

【讨论】:

  • 很高兴听到。我希望通过将密钥插入 HTML 中的工作原理也是有意义的,以便您以后可以使用它。当您从外部来源的数据动态生成 HTML 时,您会经常使用这种模式。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-07-11
  • 2016-10-31
  • 2021-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-19
相关资源
最近更新 更多