Библиотека Noty предоставляет возможность создавать уведомления, которые могут динамически изменять своё содержимое и параметры после отображения. Это особенно полезно для отображения прогресса, обновления статусов или интерактивных сообщений без необходимости закрывать и заново создавать уведомление.
Объект уведомления создаётся через конструктор Noty:
let n = new Noty({
text: 'Начальная загрузка...',
type: 'info',
timeout: false,
progressBar: true
}).show();
После вызова метода show() уведомление появляется на
экране. Для динамического обновления содержимого можно использовать
метод setText().
n.setText('Загрузка завершена!');
Этот вызов заменяет текст уведомления на новый, сохраняя все текущие стили и расположение.
Тип уведомления (success, error,
warning, info, alert) определяет
его визуальное оформление. Метод setType() позволяет
менять тип уведомления на лету:
n.setType('success');
После выполнения уведомление мгновенно приобретает соответствующий
стиль. Можно комбинировать с setText() для полного
обновления содержимого:
n.setText('Операция выполнена успешно!').setType('success');
Noty поддерживает добавление кнопок управления, которые могут изменять текст или тип уведомления по событиям:
let n = new Noty({
text: 'Подтвердите действие',
buttons: [
Noty.button('Ок', 'btn btn-success', function() {
n.setText('Действие подтверждено').setType('success');
}),
Noty.button('Отмена', 'btn btn-error', function() {
n.setText('Действие отменено').setType('error');
})
]
}).show();
Метод Noty.button создаёт интерактивные элементы,
привязанные к событиям click, которые позволяют
изменять уведомление без его закрытия.
Если уведомление использует progressBar: true, можно
обновлять прогресс вручную через метод
setProgress():
let progress = new Noty({
text: 'Загрузка...',
type: 'info',
timeout: false,
progressBar: true
}).show();
let value = 0;
let interval = setInterval(() => {
value += 0.1;
progress.setProgress(value); // значение от 0 до 1
if (value >= 1) {
clearInterval(interval);
progress.setText('Загрузка завершена').setType('success');
}
}, 500);
Метод setProgress() изменяет заполнение
прогресс-бара, сохраняя уведомление на экране до
завершения.
Метод setText() может принимать как обычный текст, так и
HTML-контент:
n.setText('<strong>Важная информация:</strong> процесс завершен');
Использование HTML позволяет форматировать текст, добавлять ссылки, иконки и стилизованные элементы, делая уведомление более наглядным.
Методы close() и show() можно использовать
для контроля жизненного цикла уведомления:
n.close();
n.setText('Повторное уведомление').show();
Такой подход позволяет повторно использовать объект уведомления, минимизируя создание новых экземпляров и снижая нагрузку на DOM.
Для реализации интерактивных и динамических уведомлений можно комбинировать несколько методов:
setText() — обновление текста;setType() — изменение типа;setProgress() — управление прогресс-баром;close() / show() — управление
видимостью.Пример сложного сценария с прогрессом и сменой типа уведомления:
let n = new Noty({
text: 'Начало обработки',
type: 'info',
timeout: false,
progressBar: true
}).show();
let progressValue = 0;
let interval = setInterval(() => {
progressValue += 0.2;
n.setProgress(progressValue);
if (progressValue < 1) {
n.setText(`Прогресс: ${Math.round(progressValue * 100)}%`);
} else {
clearInterval(interval);
n.setText('Обработка завершена').setType('success');
}
}, 1000);
Такой подход позволяет создавать живые уведомления, которые реагируют на изменения состояния приложения в реальном времени.
timeout: false только при
необходимости; уведомления без таймера требуют явного закрытия
для предотвращения накопления в DOM.Динамическое обновление в Noty обеспечивает гибкость и интерактивность уведомлений, позволяя интегрировать их в сложные пользовательские сценарии и отслеживать состояние процессов без постоянного пересоздания элементов на странице.