为 oop 使用移除事件侦听器

Use remove event listener for oop

我有一个使用 Firebase 实时数据库更新内容的按钮。我使用一个按钮来更新我的每个内容。所以我的第一个更新工作正常,但是当我想更新第二个内容时,它会更新我以前的内容。我想在每次更新后删除该事件。这样,每个内容的更新都会正常工作。你能帮我弄清楚如何做到这一点吗?

这就是我的更新按钮的作用。更新后,我想去掉点击事件,直到再次点击。

  addUpdatedTodoToFirebase(todoKey) {
  console.log(todoKey) // key used for each todo
  if (todoKey) {
    this.updateTodo.addEventListener("click", () => {
      firebase.database().ref(`users/${this.currentUser}`).child("todos").child(todoKey).update({
        action: this.selectAction.value,
        date: this.selectDate.value,
        title: this.inputTitle.value,
        description: this.inputDescription.value
      })
    })
  }
}

如果您想从 DOM 中删除事件侦听器,您可以使用:

let listener = () => {
  firebase.database().ref(`users/${this.currentUser}`).child("todos").child(todoKey).update({
    action: this.selectAction.value,
    date: this.selectDate.value,
    title: this.inputTitle.value,
    description: this.inputDescription.value
  }).then(() => {
    this.updateTodo.removeEventListener("click", listener);
  });
})
this.updateTodo.addEventListener("click", listener);

一旦数据库更新完成,上述代码将删除侦听器。