Я использую angular (версия 1.3.9) и angular-ui/typeahead из http://angular-ui.github.io/bootstrap/ (версия 0.12.0).
В моем веб-приложении пользователь должен быть вынужден выбрать один из вариантов, предлагаемых в раскрывающемся списке typeahead/autocomplete, поэтому я установил <input typeahead="..." typeahead-editable="false" .../>
.
Проблема в том, что когда пользователь нажимает кнопку мыши и удерживает ее нажатой, проверка уже срабатывает, но модель еще не обновляется с выбранным параметром. Выбор активируется, когда пользователь отпускает кнопку мыши. Таким образом, во временном интервале между нажатием и отпусканием кнопки мыши состояние элемента становится недействительным, и поэтому отображается мое соответствующее сообщение об ошибке.
Этот временной интервал обычно меньше секунды (в зависимости от того, как быстро пользователь отпускает кнопку мыши). Но все же это очень плохой пользовательский опыт, если ошибка появляется в этот небольшой период времени.
Могу ли я изменить порядок выполнения соответствующих директив? Например. ng-select следует вызывать перед ng-blur?
Какие варианты решения проблемы вы знаете?
Вы можете протестировать поведение на http://co2offset.atmosfair.de/flight/offset. Просто введите в аэропорту выберите вариант из выпадающего списка и удерживайте нажатой кнопку мыши. Затем вы увидите красное сообщение об ошибке, которое вы не должны видеть.
form.$error.<directive>[0].$touched && form.$error.<directive>[0].$invalid
. - person Lukasz Lenart   schedule 05.11.2018