Получение экземпляра уведомления

В библиотеке Noty управление уведомлениями строится вокруг экземпляров уведомлений. Экземпляр представляет собой объект, через который можно контролировать поведение уведомления после его создания: закрывать, обновлять, изменять контент или добавлять события. Понимание механизма получения и работы с экземпляром — ключевой момент для гибкого взаимодействия с уведомлениями.


Инициализация уведомления

Для создания уведомления используется конструктор new Noty(options). Обязательным параметром является объект options, который определяет внешний вид, поведение и контент уведомления.

Пример базовой инициализации:

let myNotification = new Noty({
    text: 'Это тестовое уведомление',
    type: 'success',
    layout: 'topRight',
    timeout: 3000
});

Пояснения ключевых свойств:

  • text — содержимое уведомления, может быть строкой или HTML.
  • type — тип уведомления: alert, success, error, warning, information.
  • layout — расположение на экране (topRight, topLeft, bottomRight, bottomLeft, center).
  • timeout — автоматическое закрытие через указанное время в миллисекундах. Если false, уведомление закрывается вручную.

Экземпляр уведомления сохраняется в переменной myNotification, что позволяет далее обращаться к нему напрямую.


Отображение уведомления и доступ к экземпляру

Для отображения уведомления используется метод .show():

myNotification.show();

В этот момент уведомление появляется на странице, а переменная myNotification становится полноценным экземпляром Noty. Через него доступны методы управления уведомлением.

Основные методы экземпляра:

  • .show() — отображение уведомления.
  • .close() — закрытие уведомления программно.
  • .setText(newText) — изменение текста уведомления на лету.
  • .setType(newType) — изменение типа уведомления (success, error и т.д.).
  • .on(event, callback) — привязка событий к уведомлению (например, on('onClose', () => {...})).

Пример изменения текста и типа уведомления:

myNotification.setText('Обновлённое уведомление');
myNotification.setType('warning');

Использование колбэков и событий

Экземпляры Noty поддерживают множество событий, которые позволяют выполнять действия на определённые моменты жизненного цикла уведомления:

Событие Описание
onShow Срабатывает при отображении уведомления
onClose Срабатывает при закрытии уведомления
onClick Срабатывает при клике по уведомлению
onHover Срабатывает при наведении курсора на уведомление

Пример привязки событий:

myNotification.on('onShow', function() {
    console.log('Уведомление показано');
});

myNotification.on('onClose', function() {
    console.log('Уведомление закрыто');
});

Управление несколькими экземплярами

Noty поддерживает одновременное создание нескольких уведомлений. Каждый экземпляр хранится отдельно и управляется индивидуально:

let notif1 = new Noty({text: 'Первое уведомление', type: 'success'}).show();
let notif2 = new Noty({text: 'Второе уведомление', type: 'error'}).show();

notif1.close(); // Закрывает только первое уведомление
notif2.setText('Изменённое второе уведомление'); // Обновляет только второе уведомление

Использование отдельных экземпляров позволяет гибко контролировать поведение каждого уведомления без воздействия на остальные.


Возврат экземпляра после вызова show()

Метод .show() не возвращает новый объект, а всегда работает с уже созданным экземпляром. Поэтому крайне важно сохранять объект уведомления в переменную, если требуется дальнейшее взаимодействие:

let notif = new Noty({text: 'Пример'}).show();
// notif — экземпляр, с которым можно работать:
notif.close();

Если переменная не сохранена, доступ к уведомлению будет возможен только через глобальные методы управления очередью уведомлений (Noty.closeAll()), но индивидуальное управление станет невозможным.


Ключевые рекомендации

  1. Сохранять экземпляр уведомления в переменной для динамического управления.
  2. Использовать методы экземпляра для изменения текста, типа и привязки событий.
  3. Создавать отдельные экземпляры для разных уведомлений, если требуется индивидуальное управление.
  4. Не полагаться на возвращаемое значение show(), всегда работать с исходным экземпляром.

Эта структура позволяет реализовать сложные сценарии уведомлений, включая динамическое обновление, управление временем отображения и интеграцию с пользовательскими событиями.