Задать вопрос
mbeloshitsky
@mbeloshitsky
Вебдев, систем оперейшонс, ж.д. автоматика

Как не обновлять значение input'а при пользовательском вводе?

Есть проекты на vue.js, в некоторых из них не все гладко с датабайндингом.

Хорошо, когда он однонаправленный - из полей ввода данные передаются в стейт и далее растекаются по приложению.

Но есть ряд случаев, когда удобнее использовать двухсторонний датабайндинг - то есть данные могут передаваться как из полей ввода, так и приниматься обратно в них (например, работает валидатор, инициализация полей начальными значениями или нечто подобное). В подобных ситуациях важно не обновлять данные в поле ввода, когда им занимается пользователь, в противном случае его ярость гарантирована.

Может кто знает, есть ли в ангуляре или vue какая-нибудь стандартная возможность для блокировки обновлений поля при пользовательском вводе в них? Свое-то я конечно напишу, но лениво.
  • Вопрос задан
  • 456 просмотров
Подписаться 2 Оценить Комментировать
Решения вопроса 1
mbeloshitsky
@mbeloshitsky Автор вопроса
Вебдев, систем оперейшонс, ж.д. автоматика
В видео OpenLecture #2017.1 - Let's Vue! нашелся ответ - для этого используются модификаторы. Для моего вопроса подходит модификатор .lazy.

<!-- synced after "change" instead of "input" -->
<input v-model.lazy="msg" >


Документация.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
В ангуляре можно в ng-model-options поставить например обновление только при блюре. Ну и использовать parsers/formatters для валидаторов и прочего.
Ответ написан
Комментировать
@dmz9
т.е. пока инпут в фокусе - не применять валидатор, а как только фокус потерян - применять?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы