Я использую ui-select и хотел бы выбрать первый вариант в списке, когда пользователь нажимает на него (т.е. событие размытия на ui-select-search). В настоящее время поле выбора остается открытым до тех пор, пока пользователь не выберет или не сделает выбор.Угловой ui-select выберите на blur
2
A
ответ
5
Вы можете добавить еще одну директиву Ui-выберите элемент следующим образом:
<ui-select select-on-blur ...
Затем реализована следующим образом: ('тогда' копируется из метода _handleDropDownSelection)
.directive('selectOnBlur', function() {
return {
require: 'uiSelect',
link: function(scope, elm, attrs, ctrl) {
elm.on('blur', 'input.ui-select-search', function(e) {
if(ctrl.open && (ctrl.tagging.isActivated || ctrl.activeIndex >= 0)){
ctrl.select(ctrl.items[ctrl.activeIndex]);
}
e.target.value = '';
});
}
};
})
(note: это работает только с jquery, без jquery вам нужно будет выбрать вход другим способом)
Для дальнейшего обсуждения я попробовал обернуть элемент в директиве, опубликованной tonyh на этой странице: https://github.com/angular-ui/ui-select/issues/432#issuecomment-65490071 Возвращаемые события, похоже, не соответствуют тому, что обычно можно считать событием размытия/фокусировки. – Csizzle
Глядя на привязку функции к текстовому полю .ui-select-search, связанному с выбором, чтобы при размывании был выбран первый элемент (который всегда будет соответствовать пользовательскому вводу, поскольку он создается как первый элемент в массив возвращается из функции обновления). Поиск под капотом для api для выбора первого элемента. – Csizzle
Проверьте это решение, оно сработало для меня! [Https://stackoverflow.com/a/45990035/3040886](https://stackoverflow.com/a/45990035/3040886) –