Я использовал здесь директиву опережающего ввода, которая отлично работает: http://angular-ui.github.io/bootstrap/#/typeahead
Моя проблема в том, что я ушел от сценария, в котором я использую весь объект:
<input type="text" ng-model="MyPerson" typeahead="i as i.Name for i in PeopleSearch($viewValue)" />
К сценарию, где мне нужна только часть объекта:
<input type="text" ng-model="MyPerson" typeahead="i.Id as i.Name for i in PeopleSearch($viewValue)" />
На этом этапе и модель, и текстовое поле будут содержать одно и то же, независимо от того, что введено для «как». Кто-нибудь может объяснить, почему это происходит? Кажется, что логика должна имитировать выражение для ng-options, но, видимо, это не так.
Вот демонстрация: http://plnkr.co/edit/5oqlldC3PltnrynqhnAU?p=preview.
Текстовое поле должно содержать имя человека после выбора элемента.