Как предотвратить отображение нескольких экземпляров Vue Snotify confirm

#vue.js #snotify

#vue.js #snotify

Вопрос:

Я довольно новичок в Vue и Snotify, поэтому, пожалуйста, простите за вопрос newb. Я просмотрел документы, и у меня ничего не выскакивает.

Вот в чем дело: у меня есть компонент Vue, который удаляет файлы, используя окно подтверждения Snotify. Вот так:

 destroy() {
    this.$snotify.confirm('', 'Delete File?', {
      buttons: [
            {
                text: 'Yes',
                action: (toast) => {
                    axios.delete([API endpoint])
                    .then(response => {
                        // destroy the vue listeners, etc
                        this.$destroy();

                        // remove the element from the DOM
                        this.$el.parentNode.removeChild(this.$el);
                    });
                    this.$snotify.remove(toast.id);
                }
            },
            {
                text: 'No',
                action: (toast) => {
                    this.$snotify.remove(toast.id)
                }
            }
        ]
    })
}
 

Проблема в том, что если вы нажмете кнопку «Удалить» во второй раз, появится еще один «Удалить файл»? подтверждение появляется над первым. Ожидаемое поведение заключается в том, что второй щелчок приведет к удалению подтверждения.
введите описание изображения здесь

Мы будем признательны за любую помощь, которую вы можете предложить.

Ответ №1:

this.$snotify.confirm() возвращает всплывающую информацию, которая включает идентификатор, который может быть передан this.$snotify.remove() для удаления:

 export default {
  methods: {
    destroy() {
      if (this._toast) {
        this.$snotify.remove(this._toast.id, true /* immediate */)
      }

      this._toast = this.$snotify.confirm('', 'Delete File?', {/*...*/})
    }
  }
}
 

ДЕМОНСТРАЦИЯ

Комментарии:

1. Это абсолютно сработало! Большое вам спасибо!