Подтверждение подтверждения не работает с Ember js

Я пытаюсь сделать всплывающее окно, которое подтверждает, если вы хотите удалить документ. Если я попробую:

if(alertify.confirm("Delete this?')) {
    this.store.findRecord('document', docId, {backgroundReload: false}).then((doc) => {
    doc.destroyRecord();
    alertify.success('Document successfully deleted!');
}

он не ожидает подтверждения перед запуском кода удаления, так как alerttify.confirm не блокирует, как я понимаю. Если я попробую:

deleteFile(docId) {
  alertify.confirm("Are you sure you want to delete this document?", function (e) {
    if (e) {
      this.store.findRecord('document', docId, {backgroundReload: false}).then((doc) => {
        doc.destroyRecord();
        alertify.success('Document successfully deleted!');
      });
    } else {
      alertify.error('Something went wrong!');
    }
  });
}

он запрашивает подтверждение, но код удаления не работает, так как хранилище выглядит как неопределенное, поэтому findRecord не работает. Я пытался внедрить магазин в качестве службы, но это тоже не работает. Есть ли способ заставить этот ящик подтверждения работать?

1 ответ

Решение

Ты используешь this в функции, таким образом, ссылаясь на this-контекст этой функции. Вы можете либо использовать жирные функции стрелок, либо назначить внешний this переменной. Первый будет выглядеть так:

deleteFile(docId) {
  alertify.confirm("Are you sure you want to delete this document?", (e) => {
    if (e) {
      this.store.findRecord('document', docId, {backgroundReload: false}).then((doc) => {
        doc.destroyRecord();
        alertify.success('Document successfully deleted!');
      });
    } else {
      alertify.error('Something went wrong!');
    }
  });
}
Другие вопросы по тегам