Угловой бутстрап типа вперед закрыть выбрать

Я хотел бы, чтобы список выбора закрывался, когда форма отправляется со значениями, которых нет в списке (используя typeahead-focus-first). В качестве отправной точки я использовал пример плункера typeahead.

Когда пользователь нажимает клавишу ввода, срабатывает функция storeItem, но список не закрывается.

<form ng-submit="storeItem()">
  <input type="text"
    typeahead="state for state in states | filter:$viewValue | limitTo:8" 
    typeahead-focus-first="false"/>
</form>

Функция отправки:

$scope.storeItem = function() {
   $scope.selected = Date.now();
};

См. полный плункер здесь

Как мне закрыть список, сохранив при этом входное значение и список?


person Yaelet    schedule 14.04.2015    source источник
comment
Вы видите эту проблему, следуя точной ссылке plunkr в angular-ui.github.io/bootstrap /#/вперед? У вас есть это на демо-странице? Можете ли вы точно описать свои шаги, чтобы получить этот эффект?   -  person Dmitri Zaitsev    schedule 24.04.2015


Ответы (1)


Кажется, вы нашли ошибку. Область интереса находится в директиве typeahead - метод element.bind('keydown'. Существует логика, чтобы не закрывать раскрывающийся список, когда нажимается ввод или вкладка, и ничего не выбрано:

// if there's nothing selected (i.e. focusFirst) and enter is hit, don't do anything
if (scope.activeIdx == -1 && (evt.which === 13 || evt.which === 9)) {
  return;
}

Элемент ввода теряет фокус, и всплывающее окно не закрывается. Вы должны открыть задачу в репозитории.

person Rob J    schedule 14.04.2015
comment
Спасибо, @rob-j, я сделал это. Если они подтвердят, что это проблема, я отмечу ваш ответ как принятый. - person Yaelet; 15.04.2015
comment
Можете ли вы предоставить ссылку на эту строку на Github (вы можете получить ее, нажав на номер строки)? В последней версии не нашел. - person Dmitri Zaitsev; 24.04.2015
comment
@DmitriZaitsev Ссылка на строку. - person Rob J; 24.04.2015
comment
Я понимаю. Это может быть задумано — обратите внимание на подобное поведение здесь material.angularjs.org/#/demo /material.components.autocomplete - person Dmitri Zaitsev; 24.04.2015
comment
Материальная версия, похоже, не демонстрирует такого же поведения. Проблема заключается в версии ng-bootstrap: элемент ввода теряет фокус, а раскрывающийся список остается открытым, а версия материала не теряет фокуса. - person Rob J; 24.04.2015