v-model в Petite-Vue обеспечивает двустороннюю привязку
данных между состоянием приложения и элементами формы. Использование
модификаторов расширяет возможности стандартного v-model,
позволяя автоматически преобразовывать данные при чтении или записи, а
также управлять поведением привязки в зависимости от контекста.
.number —
преобразование значений в числоМодификатор .number автоматически преобразует значение
элемента формы к числу. Это особенно важно для элементов
<input> с типом text или
number, где значение по умолчанию является строкой.
<div v-scope="{ count: 0 }">
<input v-model.number="count" type="number" />
<p>Текущее значение: {{ count }}</p>
</div>
При вводе "42" в поле ввода переменная
count станет числом 42, а не строкой
"42".
Особенности:
<input> и
<textarea>.NaN.number позволяет избежать ручного
преобразования через parseInt или
parseFloat..trim — удаление
пробеловМодификатор .trim удаляет начальные и конечные пробелы
из строки перед записью значения в переменную состояния.
<div v-scope="{ username: '' }">
<input v-model.trim="username" />
<p>Имя пользователя: '{{ username }}'</p>
</div>
При вводе " admin " значение переменной
username будет "admin".
Особенности:
.lazy —
обновление данных по событию changeПо умолчанию v-model обновляет переменную состояния при
каждом событии input. Модификатор .lazy
изменяет поведение: обновление происходит только при событии
change, то есть после потери фокуса или подтверждения ввода
пользователем.
<div v-scope="{ message: '' }">
<input v-model.lazy="message" />
<p>Сообщение: {{ message }}</p>
</div>
Особенности:
Модификаторы можно комбинировать для создания более сложного поведения:
<div v-scope="{ age: 0 }">
<input v-model.number.lazy="age" type="text" />
<p>Возраст: {{ age }}</p>
</div>
В этом примере значение будет:
change.<input type="text"> и
<textarea> Поддерживают все стандартные
модификаторы: .trim, .number,
.lazy.<input type="checkbox"> Значение
привязывается к булевому состоянию. Модификатор .number
может использоваться при массивной привязке для числовых значений.<input type="radio"> Привязка
осуществляется к переменной состояния, совпадающей со значением
value выбранного радио. Модификаторы .trim и
.number работают при необходимости преобразования.<select> Работает с
.number и .lazy. При множественном выборе
следует учитывать, что значение становится массивом.v-model с модификаторами в Petite-Vue реализован
через:
.lazy меняет
событие с input на change..trim и
.number изменяют значение перед записью в состояние..trim
предотвращает случайные пробелы в логине и пароле..number упрощает работу
с возрастом, ценами или количеством..lazy
сокращает количество лишних обновлений при сложных вычислениях или
валидации..number на полях, где допустимы пустые
строки или нестандартные символы..trim применим только к строковым значениям; при
комбинировании с .number сначала удаляются пробелы, затем
выполняется преобразование в число..lazy с .number или
.trim подходит для полей, где важна чистота данных и
минимизация обновлений состояния.