У меня есть вход с автозаполнением углового ui-type-head.
Пользователь начинает вводить текст, и они могут выбрать вариант из автозаполнения или ввести текст, который не указан.
Если пользователь не использует автозаполнение, я должен изменить текст метки, указав, что this element will be added
<input
ng-blur="checkIfNewProvider()"
ng-model="providerSelected"
uib-typeahead="provider as provider.name for provider in providers | filter:$viewValue | limitTo:8" placeholder="{{ 'new-product.provider.placeholder' | locate }}"
/>
Я проверял размытие поля, если выбранный вариант был или нет на автозаполнении.
Проблема в том, что, когда пользователь нажимает на меню параметров, которое показывает автоколлекция, размытие запускается, и метка изменилась.
После того, как вы покинули поле снова, размытие запускается снова, и текст метки фиксирован.
Какое событие я могу вызвать, или что я могу сделать, чтобы исправить это?
Вы можете использовать атрибут директивы typeahead-on-select($item, $model, $label)
который запускает вашу функцию при выборе элемента из раскрывающегося списка:
<input
type="text"
ng-blur="blur()"
typeahead-on-select="blur()"
ng-model="selected"
uib-typeahead="provider as provider.name for provider in providers | filter:$viewValue | limitTo:8" class="form-control">
Другая попытка, но на самом деле не предлагаемая, - это $watch
модель и проверять, соответствует ли она элементу из вашего массива.
typeahead-on-select
работает после blur
, поэтому проблема та же. Я не могу удалить размытие, иначе, если текст записи не находится на автозаполнении, я не могу проверить
typeahead-on-select
. Вы пытались использовать $watcher
?