Slim.js предоставляет мощную систему управления событиями, которая позволяет не только назначать обработчики, но и гибко модифицировать их поведение с помощью модификаторов событий. Модификаторы — это специальные ключевые слова, добавляемые к событию, которые изменяют способ его обработки, обеспечивая удобный и лаконичный синтаксис.
Модификаторы применяются в атрибуте события через двоеточие. Например:
<button click:prevent="handleClick">Нажать</button>
Здесь prevent — модификатор, который автоматически
вызывает event.preventDefault() перед выполнением
обработчика handleClick.
event.stopPropagation()).Пример комбинирования нескольких модификаторов:
<form submit:prevent:stop="submitForm">
<input type="text" name="username">
<button type="submit">Отправить</button>
</form>
В этом случае форма не будет отправлена стандартным способом, а событие не будет всплывать к родительским элементам.
Slim.js позволяет использовать модификаторы и для кастомных событий, что упрощает работу с компонентами:
class MyComponent extends Slim {
onMyCustomEvent(e) {
console.log('Событие вызвано:', e.detail);
}
}
customElements.define('my-component', MyComponent);
<my-component mycustomevent:once="onMyCustomEvent"></my-component>
Модификатор once гарантирует, что обработчик будет
вызван лишь один раз, даже если компонент многократно инициирует
событие.
Slim.js поддерживает передачу аргументов внутрь обработчиков. Модификаторы при этом не мешают передаче параметров:
<button click:prevent="handleClick('data')">Нажать</button>
Обработчик handleClick получит аргумент
'data', при этом стандартное действие кнопки будет
предотвращено автоматически.
Модификаторы можно комбинировать с условными выражениями для более точного контроля:
<button click:stop:prevent:once="userLoggedIn && doAction()">Клик</button>
В данном случае действие выполнится только если
userLoggedIn истинно, событие не всплывет, стандартное
поведение будет предотвращено, а обработчик сработает только один
раз.
Slim.js автоматически поддерживает делегирование событий для вложенных элементов. Модификаторы применяются корректно даже в таких случаях:
<ul>
<li click:stop="selectItem">Элемент 1</li>
<li click:stop="selectItem">Элемент 2</li>
</ul>
Использование stop предотвращает всплытие клика к
<ul> или другим родителям, обеспечивая локальную
обработку на каждом <li>.
В Slim.js можно расширять стандартный набор модификаторов, регистрируя свои через API. Например:
Slim.registerModifier('log', (event, handler) => {
console.log('Событие:', event.type);
handler(event);
});
Теперь можно использовать модификатор log для любого
события:
<button click:log="handleClick">Клик</button>
Каждый вызов будет сначала логировать тип события, а затем выполнять обработчик.
prevent, а не вызывать event.preventDefault()
вручную.self помогает
избежать лишних вызовов обработчиков.once и prevent удобно для
кнопок отправки форм и одноразовых действий.Модификаторы событий в Slim.js обеспечивают лаконичное и гибкое управление взаимодействием, уменьшают количество ручного кода и повышают читаемость компонентов. Они являются ключевым инструментом при построении интерактивных и масштабируемых приложений.