x-model
x-model
позволяет вам привязать значение входного элемента к данным Alpine.
Вот простой пример использования x-model
для привязки значения текстового поля к фрагменту данных в Alpine.
Теперь, когда пользователь вводит текст в текстовое поле, message
будет отражаться в теге <div>
ниже.
Директива x-model
имеет двустороннюю привязку, что означает, что она одновременно «устанавливает» и «получает». Помимо изменения данных, если изменяются сами данные, элемент отразит это изменение.
Мы можем использовать тот же пример, что и выше, но на этот раз мы добавим кнопку для изменения значения свойства message
.
Теперь при нажатии кнопки <button>
значение элемента ввода мгновенно обновится до «изменено».
x-model
работает со следующими элементами ввода:
<input type="text">
<textarea>
<input type="checkbox">
<input type="radio">
<select>
<input type="range"
Текстовое поле
Текстовая область
Флажок
Одиночный флажок с логическим значением
Несколько флажков, привязанных к массиву
Переключатели
Выпадающий список
Одиночный выбор
Одиночный выбор с заполнителем
Множественный выбор
Динамически заполняемые параметры выбора
Ползунок
Модификаторы
.lazy
При вводе текста по умолчанию x-model
обновляет свойство при каждом нажатии клавиши. Добавив модификатор .lazy
, вы можете заставить входные данные x-model
обновлять свойство только тогда, когда пользователь фокусируется на элементе ввода.
Это удобно для таких вещей, как проверка формы в реальном времени, когда вы, возможно, не захотите показывать ошибку проверки ввода, пока пользователь не «перейдёт» к другому полю.
.number
По умолчанию любые данные, хранящиеся в свойстве через x-model
, сохраняются в виде строки. Чтобы заставить Alpine сохранить значение как число JavaScript, добавьте модификатор .number
.
.boolean
По умолчанию любые данные, хранящиеся в свойстве через x-model
, сохраняются в виде строки. Чтобы заставить Alpine сохранить значение как логическое значение JavaScript, добавьте модификатор .boolean
. И целые числа (1/0), и строки (true/false) являются допустимыми логическими значениями.
.debounce
Добавив .debounce
к x-model
, вы можете легко отменить обновление связанного ввода.
Это полезно для таких вещей, как входные данные поиска в реальном времени, которые извлекают новые данные с сервера каждый раз, когда изменяется свойство поиска.
Время задержки выполнения по умолчанию составляет 250 миллисекунд, вы можете легко настроить его, добавив модификатор времени:
.throttle
Подобно .debounce
, вы можете ограничить обновление свойств, инициируемое x-model
, только обновлением через указанный интервал.
Интервал по умолчанию составляет 250 миллисекунд, вы можете легко настроить его, добавив модификатор времени:
.fill
По умолчанию, если входные данные имеют атрибут value, Alpine игнорирует их, и вместо этого значение входных данных устанавливается равным значению свойства, привязанного с помощью x-model
.
Но если связанное свойство пусто, вы можете использовать атрибут value входного значения для заполнения свойства, добавив модификатор .fill
:
Программный доступ
Alpine предоставляет встроенные утилиты для получения и настройки свойств, связанных с x-model
Это полезно для сложных утилит Alpine, которые могут захотеть переопределить поведение x-model
по умолчанию, или в случаях, когда вы хотите разрешить x-model
для элемента, не являющегося полем ввода.
Вы можете получить доступ к этим утилитам через свойство _x_model
в элементе x-model
. _x_model
имеет два метода для получения и установки связанного свойства:
el._x_model.get()
(возвращает значение связанного свойстваy)el._x_model.set()
(устанавливает значение связанного свойства)
Проверка знаний
-
Директива
x-model
… -
Как принудить Alpine сохранять введённое значение в виде числа?