Angular Bootstrap Type Ahead Проблемы с синтаксисом typeahead

Я использовал здесь директиву опережающего ввода, которая отлично работает: 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.

Текстовое поле должно содержать имя человека после выбора элемента.


person John    schedule 14.02.2014    source источник


Ответы (1)


Вот мое решение на случай, если кто-то еще столкнется с этим:

<input type="text" ng-model="MySelectedPerson" typeahead="i as i.Name for i in PeopleSearch($viewValue)" typeahead-on-select="MyPerson = MySelectedPerson.Id" />
person John    schedule 14.02.2014
comment
Вы полностью спасли меня от этого, спасибо, что опубликовали свое решение. Это также направило меня в правильном направлении, чтобы узнать больше об этой проблеме от разработчиков angular-ui. См. ответ pkozlowski-opensource github.com/angular-ui/bootstrap/issues/981. и его plunkr. Он использует атрибут typeahead-input-formatter. - person BeeZee; 19.03.2014