2014-12-02 5 views
2

Я пытаюсь выяснить, как иметь UI.Bootstrap Typeahead (http://angular-ui.github.io/bootstrap/), только установить значение модели, если выбор сделан из раскрывающегося списка, и очистить поле, если выбор не был сделан.Угловой UT Bootstrap - очистить значение модели, если выпадающее значение Typeahead не выбрано?

Если есть другой контроль, который делает это, это тоже сработает.

Typeahead выбирает объект, и если пользователь просто набирает несколько символов, а затем покидает поле, значение модели устанавливается на строковое значение поля. Я, очевидно, могу проверить этот случай, но изменение значения модели области не обновляет форму. Поэтому, если у меня есть обязательное поле, мне также необходимо установить значение поля в значение false.

Все это похоже на большую работу, которую кто-то должен был понять. Какие-либо предложения?

Редактировать

Другой думал, что у меня было, это лучшая практика, чтобы отделить машинописный от значений области видимости, которые переданы или передаются обратно на сервер?

ответ

5

У меня была аналогичная проблема. Способ, которым я обходил его, - это использовать событие blur для проверки.

<input type="text" ng-model="yourModel" ng-blur="validateSelection() 
    typeahead="item for item in list | filter:$viewValue""> 
+0

Так я и решил это решить. Хотя я еще не обновил это, потому что я работаю над более полным запросом на pull для самого элемента управления. Предоставление этой функции настраиваемой опции –

+0

@JoshRusso, как вы обрабатываете выделение с помощью мыши? событие размывания происходит до события select и до изменения значения модели? – hansmaad

+0

@hansmaad Я рад, что вы спросили, это отличный момент. Вам нужно использовать некоторый 'SetTimeout()' trickery. Тело 'validateSelection()' функции необходимо обернуть в вызов 'SetTimeout()' и захватить Idout таймаута. В событии клика меню вы отменяете тайм-аут с помощью команды clearTimeout(). Поскольку это событие щелчка, вызывающее размытие, вам даже не нужно устанавливать значение задержки. То, как работает тайм-аут, по сути, просто перемещает тело проверки, чтобы быть последним, что вызвано в этой серии вызовов. –

Смежные вопросы