Ответ 1
Есть способ реализовать это очень легко, не нужно развертывать свое собственное решение (по крайней мере, не для этого случая!). В принципе, вы можете использовать любую функцию как часть выражения typeaheads, например:
<input type="text" ng-model="selected" typeahead="state for state in getStates($viewValue)">
Как вы можете видеть из этого примера, можно вызвать метод getStates($viewValue)
(определенный в области), а $viewValue
соответствует значению, введенному пользователем.
Что лучше всего, так это то, что ваша функция может вернуть обещание, и это обещание будет правильно распознано с помощью typeahead.
Некоторое время назад я написал образец plunk, который показывает, как использовать вызовы на стороне сервера, чтобы обеспечить автоматическое заполнение. Проверьте этот фрагмент, который показывает автозаполнение для всех городов в США (на основе geobytes.com), где запросы по кварталам запрашиваются в реальном времени от службы JSONP:
http://plnkr.co/edit/t1neIS?p=preview
Обратите внимание на рабочий пример того, как выполнять фильтрацию на стороне сервера (для просмотра результатов необходимо ввести не менее 3 символов). Конечно, вы не ограничены вызовами jsonp, вы можете использовать любой метод, который возвращает обещание.