Alpine.data
Alpine.data(...)
предоставляет возможность повторного использования контекстов x-data
в вашем приложении.
Для примера приведём надуманный компонент dropdown
:
Как видите, мы вынесли свойства и методы, которые обычно определяются непосредственно внутри x-data
, в отдельный объект компонента Alpine.
Регистрация в сборке
Если вы решили использовать шаг сборки для своего кода Alpine, то вам следует зарегистрировать свои компоненты следующим образом:
Предполагается, что у вас есть файл dropdown.js
со следующим содержимым:
Исходные параметры
Помимо обращения к провайдерам Alpine.data
по их имени в простом виде (например, x-data="dropdown"
), можно обращаться к ним как к функциям (x-data="dropdown()"
). Вызывая их непосредственно как функции, можно передавать дополнительные параметры, которые будут использоваться при создании исходного объекта данных, например, так:
Теперь можно повторно использовать объект dropdown
, но при необходимости снабжать его различными параметрами.
Метод init
Если ваш компонент содержит метод init()
, то Alpine автоматически выполнит его перед рендерингом компонента. Например:
Метод destroy
Если ваш компонент содержит метод destroy()
, то Alpine автоматически выполнит его перед очисткой компонента.
Основной пример — регистрация обработчика события в другой библиотеке или API браузера, недоступных через Alpine.
Как использовать метод destroy()
для очистки такого обработчика, смотрите в следующем примере:
Примером отсоединения компонента является использование его внутри x-if
:
Использование магических свойств
Если необходимо получить доступ к магическим методам или свойствам из объекта компонента, то это можно сделать, используя контекст this
:
Инкапсуляция директив с помощью x-bind
Если вы хотите повторно использовать не только объект данных компонента, вы можете инкапсулировать целые директивы шаблона Alpine с помощью x-bind
.
Ниже приведён пример извлечения деталей шаблона нашего предыдущего выпадающего компонента с помощью x-bind
:
Проверка знаний
-
Правильный вызов провайдеров
Alpine.data
… -
Как обратиться к магическому методу
$watch
компонента??